最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫(kù)優(yōu)化的六種方式總結(jié)

 更新時(shí)間:2022年01月25日 09:30:53   作者:白大鍋  
關(guān)于數(shù)據(jù)庫(kù)優(yōu)化,網(wǎng)上有不少資料和方法,但是不少質(zhì)量參差不齊,所以下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)優(yōu)化的六種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

方法一

使用連接來(lái)代替子查詢(Sub-Queries)??梢允褂肧ELECT語(yǔ)句來(lái)創(chuàng)建一個(gè)單列的查詢結(jié)果,然后把這個(gè)結(jié)果作為過(guò)濾條件用在另一個(gè)查詢中。

DELETE  FROM  customerinfo
WHERE  CustomerID  NOT  in  (SELECT customerid  FROM  salesinfo)

方法二

事務(wù)。不是所有的數(shù)據(jù)庫(kù)操作都可以只用一條或少數(shù)幾條SQL語(yǔ)句就可以完成的。更多的時(shí)候是需要用到一系列的語(yǔ)句來(lái)完成某種工作。可以保持?jǐn)?shù)據(jù)庫(kù)中數(shù)據(jù)的完整性和一致性

BEGIN;
  INSERT   INTO   salesinfo   SET   customerid=14;
  UPDATE   inventory   SET   quantity =11   WHERE   item='book';
COMMIT;

方法三

鎖定表。由于在事務(wù)執(zhí)行的過(guò)程中,數(shù)據(jù)庫(kù)將會(huì)被鎖定,因此其他的用戶請(qǐng)求只能暫時(shí)等待直到該事務(wù)結(jié)束。有些情況下我們可以通過(guò)鎖定表的放大來(lái)獲得更好的性能。

LOCK TABLE inventory WRITE SELECT quantity  FROM   inventory   WHERE Item='book';
...
UPDATE   inventory   SET   Quantity=11   WHERE  Item='book';UNLOCKTABLES

方法四

使用外鍵。鎖定表的方法可以保護(hù)數(shù)據(jù)的完整性,但是卻不能保證數(shù)據(jù)的關(guān)聯(lián)性。

CREATE  TABLE   customerinfo( customerid   int primary key) engine = innodb;
CREATE  TABLE   salesinfo( salesid int not null,customerid  int not null, primary key(customerid,salesid),foreign key(customerid)  references  customerinfo(customerid) on delete cascade)engine = innodb;

方法五

使用索引。

索引是提高數(shù)據(jù)庫(kù)性能的常用方法,它可以令數(shù)據(jù)庫(kù)服務(wù)器以比沒(méi)有索引快得多的速度檢索特定的行,尤其是在查詢語(yǔ)句當(dāng)中包含有MAX(),MIN()和ORDERBY這些命令的時(shí)候,性能提高更為明顯。

那該對(duì)哪些字段建立索引呢?

一般說(shuō)來(lái),索引應(yīng)建立在那些將用于JOIN,WHERE判斷和ORDERBY排序的字段上。盡量不要對(duì)數(shù)據(jù)庫(kù)中某個(gè)含有大量重復(fù)的值的字段建立索引。對(duì)于一個(gè)ENUM類型的字段來(lái)說(shuō),出現(xiàn)大量重復(fù)值是很有可能的情況

例如customerinfo中的“province”…字段,在這樣的字段上建立索引將不會(huì)有什么幫助;相反,還有可能降低數(shù)據(jù)庫(kù)的性能。我們?cè)趧?chuàng)建表的時(shí)候可以同時(shí)創(chuàng)建合適的索引,也可以使用ALTERTABLE或CREATEINDEX在以后創(chuàng)建索引。此外,MySQL從版本3.23.23開始支持全文索引和搜索。全文索引在MySQL中是一個(gè)FULLTEXT類型索引,但僅能用于MyISAM類型的表。對(duì)于一個(gè)大的數(shù)據(jù)庫(kù),將數(shù)據(jù)裝載到一個(gè)沒(méi)有FULLTEXT索引的表中,然后再使用ALTERTABLE或CREATEINDEX創(chuàng)建索引,將是非??斓?。但如果將數(shù)據(jù)裝載到一個(gè)已經(jīng)有FULLTEXT索引的表中,執(zhí)行過(guò)程將會(huì)非常慢。

方法六

選取最適用的字段屬性。MySQL可以支持大數(shù)據(jù)量的存取,但是數(shù)據(jù)庫(kù)中的表越小,在上面執(zhí)行的查詢就越快。所以可以將表中的字段寬度設(shè)置的盡可能小

附:mysql優(yōu)化的常用方法

1.索引的優(yōu)化

  • 只要列中含有NULL值,就最好不要在此例設(shè)置索引,復(fù)合索引如果有NULL值,此列在使用時(shí)也不會(huì)使用索引
  • 盡量使用短索引,如果可以,應(yīng)該制定一個(gè)前綴長(zhǎng)度
  • 對(duì)于經(jīng)常在where子句使用的列,最好設(shè)置索引,這樣會(huì)加快查找速度
  • 對(duì)于有多個(gè)列where或者order by子句的,應(yīng)該建立復(fù)合索引
  • 對(duì)于like語(yǔ)句,以%或者‘-’開頭的不會(huì)使用索引,以%結(jié)尾會(huì)使用索引
  • 盡量不要在列上進(jìn)行運(yùn)算(函數(shù)操作和表達(dá)式操作)
  • 盡量不要使用not in和<>操作

2.sql語(yǔ)句的優(yōu)化

  • 查詢時(shí),能不要*就不用*,盡量寫全字段名
  • 大部分情況連接效率遠(yuǎn)大于子查詢
  • 多使用explain和profile分析查詢語(yǔ)句
  • 查看慢查詢?nèi)罩?,找出?zhí)行時(shí)間長(zhǎng)的sql語(yǔ)句優(yōu)化
  • 多表連接時(shí),盡量小表驅(qū)動(dòng)大表,即小表 join 大表
  • 在千萬(wàn)級(jí)分頁(yè)時(shí)使用limit
  • 對(duì)于經(jīng)常使用的查詢,可以開啟緩存

3.表的優(yōu)化

  • 表的字段盡可能用NOT NULL
  • 字段長(zhǎng)度固定的表查詢會(huì)更快
  • 把數(shù)據(jù)庫(kù)的大表按時(shí)間或一些標(biāo)志分成小表
  • 將表分區(qū)

總結(jié)

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)優(yōu)化的六種方式的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫(kù)優(yōu)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql建表常用sql語(yǔ)句個(gè)人經(jīng)驗(yàn)分享

    mysql建表常用sql語(yǔ)句個(gè)人經(jīng)驗(yàn)分享

    熟悉一些常用的建表語(yǔ)句可以提升你建表的速度效率,本文整理了一些,個(gè)人感覺(jué)還不錯(cuò),希望對(duì)大家有所幫助
    2014-01-01
  • 淺談MySQL的性能優(yōu)化

    淺談MySQL的性能優(yōu)化

    這篇文章主要介紹了淺談MySQL的性能優(yōu)化,MySQL性能優(yōu)化是通過(guò)對(duì)數(shù)據(jù)庫(kù)的配置、查詢優(yōu)化以及索引優(yōu)化等手段提高數(shù)據(jù)庫(kù)的響應(yīng)速度和處理能力,本文從多個(gè)層面對(duì)mysql性能優(yōu)化進(jìn)行了小結(jié),需要的朋友可以參考下
    2023-08-08
  • Python版Mysql爆破小腳本

    Python版Mysql爆破小腳本

    本文給大家分享的是使用Python制作的MySQL在線用戶密碼的暴力破解腳本,非常的好用,有需要的小伙伴可以參考下
    2016-10-10
  • MySQL使用MD5加密算法進(jìn)行數(shù)據(jù)加密功能

    MySQL使用MD5加密算法進(jìn)行數(shù)據(jù)加密功能

    在現(xiàn)代的數(shù)據(jù)庫(kù)應(yīng)用中,數(shù)據(jù)的安全性和隱私性變得尤為重要,MySQL作為最流行的關(guān)系型數(shù)據(jù)庫(kù)之一,提供了多種加密功能,允許用戶對(duì)數(shù)據(jù)進(jìn)行加密和解密操作,在這篇文章中,我們將深入探討MySQL的加密功能,并重點(diǎn)介紹如何使用MD5加密算法進(jìn)行加密,需要的朋友可以參考下
    2024-12-12
  • 淺談MYSQL主鍵約束和唯一約束的區(qū)別

    淺談MYSQL主鍵約束和唯一約束的區(qū)別

    本文主要介紹了MYSQL主鍵約束和唯一約束的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Canal進(jìn)行MySQL到MySQL數(shù)據(jù)庫(kù)全量+增量同步踩坑指南

    Canal進(jìn)行MySQL到MySQL數(shù)據(jù)庫(kù)全量+增量同步踩坑指南

    這篇文章主要介紹了使用Canal作為遷移工具,將數(shù)據(jù)庫(kù)從A服務(wù)器遷移至B服務(wù)器,為了盡量減少遷移導(dǎo)致的停機(jī)時(shí)間,考慮使用全量遷移+增量同步的方式
    2023-10-10
  • Mysql日志文件和日志類型介紹

    Mysql日志文件和日志類型介紹

    這篇文章主要介紹了Mysql日志文件和日志類型介紹,本文講解了日志文件類型、錯(cuò)誤日志、通用查詢?nèi)罩尽⒙俨樵內(nèi)罩?、二進(jìn)制日志等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • 一步步教你在Navicat上如何停止正在運(yùn)行的MYSQL語(yǔ)句

    一步步教你在Navicat上如何停止正在運(yùn)行的MYSQL語(yǔ)句

    很多時(shí)候我們會(huì)提交一些耗時(shí)比較長(zhǎng)的sql,可能出現(xiàn)mysql服務(wù)器內(nèi)存或者CPU暴增,引起報(bào)警,甚至影響其他業(yè)務(wù),下面這篇文章主要給大家介紹了關(guān)于在Navicat上如何停止正在運(yùn)行的MYSQL語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 查看 MySQL 已經(jīng)運(yùn)行多長(zhǎng)時(shí)間的方法

    查看 MySQL 已經(jīng)運(yùn)行多長(zhǎng)時(shí)間的方法

    查看MySQL啟動(dòng)時(shí)間以及運(yùn)行了多長(zhǎng)時(shí)間的方法有利用show與updtime或在linux中直接使用grep mysql 相關(guān)參數(shù)來(lái)查看,下面我們一起來(lái)看看
    2014-01-01
  • mysql中批量插入數(shù)據(jù)(1萬(wàn)、10萬(wàn)、100萬(wàn)、1000萬(wàn)、1億級(jí)別)

    mysql中批量插入數(shù)據(jù)(1萬(wàn)、10萬(wàn)、100萬(wàn)、1000萬(wàn)、1億級(jí)別)

    本文主要介紹了mysql中批量插入數(shù)據(jù)(1萬(wàn)、10萬(wàn)、100萬(wàn)、1000萬(wàn)、1億級(jí)別),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論

林西县| 丘北县| 九寨沟县| 搜索| 益阳市| 喀什市| 贺州市| 茶陵县| 云浮市| 大新县| 宝丰县| 革吉县| 宣威市| 祁门县| 阳新县| 陵水| 乌兰县| 巴青县| 桃源县| 长宁区| 大港区| 郧西县| 湄潭县| 蓬莱市| 玛沁县| 化德县| 东平县| 屏山县| 通州区| 依安县| 襄城县| 嵩明县| 英吉沙县| 二连浩特市| 辉县市| 监利县| 四川省| 尖扎县| 元江| 塔城市| 屏东市|