一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

數(shù)據(jù)庫(kù)mysql注意點(diǎn)及sql優(yōu)化

 小仙女本仙人 2022-02-23

一 注意點(diǎn)
1、delete、truncate、drop;可以這么理解,一本書,delete是把目錄撕了,truncate是把書的內(nèi)容撕下來燒了,drop是把書燒了
2、慎用insert into select,select語(yǔ)句會(huì)進(jìn)行相關(guān)數(shù)據(jù)加鎖,如無索引條件會(huì)進(jìn)行全表加鎖。

二 sql語(yǔ)句優(yōu)化點(diǎn)
1、通過EXPLAIN分析低效的SQL執(zhí)行計(jì)劃
- select_type:表示SELECT的類型,常見的取值有SIMPLE(簡(jiǎn)單表,即不使用表連接或者子查詢)、PRIMARY(主查詢,即外層的查詢)、UNION(UNION中的第二個(gè)或者后面的查詢語(yǔ)句)、SUBQUERY(子查詢中的第一個(gè)SELECT)等。
- table:輸出結(jié)果的表名
- type:表示MySQL在表中找到所需行的方式,或者叫訪問類型
常見的有:ALL index range ref eq_ref const,system NULL,從左到右,性能由最差到最好。
type=ALL:全表掃描。type=index:索引全掃描,MySQL遍歷整個(gè)索引來查詢。type=range:索引范圍掃描,常見于<、<=、>、 >=、 between。type=ref:使用非唯一索引掃描或唯一索引的前綴掃描,返回匹配某個(gè)單獨(dú)值的記錄。type=eq_ref:類似ref,區(qū)別就在使用的索引是唯一索引,對(duì)于每個(gè)索引鍵值,表中只有一條記錄匹配,簡(jiǎn)單來說,就是多表連接中使用primary key或者unique index作為關(guān)聯(lián)條件。type=const/system:?jiǎn)伪碇凶疃嘤幸粋€(gè)匹配行,查詢起來非常迅速,一般主鍵primary key或者唯一索引unique index進(jìn)行的查詢,通過唯一索引uk_email訪問的時(shí)候,類型type為const;而從我們構(gòu)造的僅有一條記錄的a表中檢索時(shí),類型type為system。type=NULL:MySQL不用訪問表或者索引,就能直接得到結(jié)果。
類型type還有其他值,如ref_or_null(與ref類似,區(qū)別在于條件中包含對(duì)NULL的查詢)、index_merge(索引合并優(yōu)化)、unique_subquery(in的后面是一個(gè)查詢主鍵字段的子查詢)、index_subquery(與unique_subquery類似,區(qū)別在于in的后面是查詢非唯一索引字段的子查詢)
- possible_keys:表示查詢時(shí)可能使用的索引。- key:表示實(shí)際使用的索引。- key_len:使用到索引字段的長(zhǎng)度。- rows:掃描行的數(shù)量- Extra:執(zhí)行情況的說明和描述,包含不適合在其他列中顯示但是對(duì)執(zhí)行計(jì)劃非常重要的額外信息。Using where:表示優(yōu)化器除了利用索引來加速訪問之外,還需要根據(jù)索引回表查詢數(shù)據(jù)。
2、insert語(yǔ)句,如果同時(shí)從同一客戶插入很多行,盡量使用多個(gè)值表的 INSERT 語(yǔ)句,這種方式將大大
縮減客戶端與數(shù)據(jù)庫(kù)之間的連接、關(guān)閉等消耗,使得效率比分開執(zhí)行的單個(gè) INSERT 語(yǔ) 句快(在一些情況中幾倍)。下面是一次插入多值的一個(gè)例子:
insert into test values(1,2),(1,3),(1,4)
3、避免使用not in,not in失去索引效果。
4、select count(id) < count(1) < count(*).
5、inner join,left/right join來代替子查詢
6、在使用like進(jìn)行數(shù)據(jù)表的查詢時(shí),能用單%的情況下,不建議使用雙%,雙%查詢會(huì)導(dǎo)致mysql引擎放棄使用索引而進(jìn)行全表掃描查詢。
7、應(yīng)盡量避免在where子句中對(duì)字段進(jìn)行函數(shù)操作,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。
8、很多時(shí)候用 exists 代替 in 是一個(gè)好的選擇:
select num from a where num in(select num from b)
用下面的語(yǔ)句替換:
select num from a where exists(select 1 from b where num=a.num)
9、索引并不是越多越好,索引固然可以提高相應(yīng)的 select 的效率,但同時(shí)也降低了 insert 及 update 的效率,因?yàn)?insert 或 update 時(shí)有可能會(huì)重建索引,所以怎樣建索引需要慎重考慮,視具體情況而定。一個(gè)表的索引數(shù)最好不要超過6個(gè),若太多則應(yīng)考慮一些不常使用到的列上建的索引是否有必要。
10、應(yīng)盡量避免在 where 子句中對(duì)字段進(jìn)行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:
select id from t where num is null
可以在num上設(shè)置默認(rèn)值0,確保表中num列沒有null值,然后這樣查詢:
select id from t where num=0 。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产传媒高清视频在线| 午夜视频在线观看日韩| 成人综合网视频在线观看| 亚洲熟女一区二区三四区| 成人午夜视频在线播放| 俄罗斯胖女人性生活视频| 国内九一激情白浆发布| 日本不卡片一区二区三区| 五月天丁香婷婷狠狠爱| 国产欧美日韩综合精品二区| 日韩欧美在线看一卡一卡| 成人精品日韩专区在线观看| 午夜精品在线观看视频午夜| 成人欧美精品一区二区三区| 日韩精品一区二区三区射精| 五月综合激情婷婷丁香| 欧洲一区二区三区自拍天堂| 亚洲一区二区三区av高清| 夜夜躁狠狠躁日日躁视频黑人 | 丰满人妻熟妇乱又乱精品古代| 日韩国产中文在线视频| 日韩精品在线观看完整版| 男人和女人草逼免费视频| 色婷婷日本视频在线观看| 日韩欧美综合在线播放| 精品人妻精品一区二区三区| 欧美精品亚洲精品日韩专区| 熟女乱一区二区三区四区| 国产传媒一区二区三区| 国产内射在线激情一区| 在线亚洲成人中文字幕高清| 色一情一乱一区二区三区码| 欧美日韩一级aa大片| 欧美一区二区不卡专区| 国产欧美日韩在线精品一二区| 欧美精品中文字幕亚洲| 日本午夜精品视频在线观看| 欧美黑人精品一区二区在线| 亚洲一级二级三级精品| 九九久久精品久久久精品| 亚洲欧美国产精品一区二区|