久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

SQL優(yōu)化的N種方法(小結(jié))

瀏覽:308日期:2023-03-06 14:25:10

1.SQL語句中IN包含的值不應(yīng)過多:

例如:select id from handsome where number in(1,2,3) 對于連續(xù)的數(shù)值,能用between就不要用in了。

2.SELECT語句務(wù)必指明字段名稱:

禁止用 * 來查詢 ,禁止用 * 來查詢 ,禁止用 * 來查詢 ,重要的事情說三遍, 查找哪個字段,就寫具體的字段。

3.只查詢一條數(shù)據(jù)的時候,使用limit 1

【這個很有用】

4.避免在where子句中對字段進行null值判斷

5.避免在where子句中對字段進行表達式操作:

select  id from user  WHERE id*100=500;

上面的sql對字段就行了算術(shù)運算,這會造成引擎放棄使用索引,建議改成:

select  id from user  WHERE id=500/100;

6.對于聯(lián)合索引來說,要遵守最左前綴法則:

例如組合索引(id,name,sex) 使用的時候,可以id 或者id,name 。禁止直接name,或者sex會導(dǎo)致聯(lián)合索引失敗

注意: id, name,sex 這三個字段填寫順序不會有影響, mysql會自動優(yōu)化成最左匹配的順序

前三條sql都能命中索引,中間兩條由于不符合最左匹配原則,索引失效

最后一條sql 由于有最左索引id 所以索引部分成功,部分失效. id字段索引使用成功

explain select * from ?`user_test` where uid=10 ?;?
explain select * from ?`user_test` where uid=10 and name="識時務(wù)者";?
explain select * from ?`user_test` where uid=10 and name="識時務(wù)者" and phone="13047967256";?

explain select * from ?`user_test` where name="識時務(wù)者" and phone="13047967256";?
explain select * from ?`user_test` where name="識時務(wù)者";?

explain select * from ?`user_test` where uid=10 and phone="13047967256";?

7.盡量使用inner join,避免left join

如果連接方式是inner join,在沒有其他過濾條件的情況下MySQL會自動選擇小表作為驅(qū)動表,但是left join在驅(qū)動表的選擇上遵循的是左邊驅(qū)動右邊的原則,即left join左邊的表名為驅(qū)動表。

8.注意范圍查詢語句:

對于聯(lián)合索引來說,如果存在范圍查詢,比如between、>、<等條件時,會造成后面的索引字段失效。

解決辦法: 業(yè)務(wù)允許的情況下,使用 >= 或者<= 這樣不影響索引的使用

9.不建議使用%前綴模糊查詢:

例如 : LIKE“%name”或者LIKE“%name%”,這種查詢會導(dǎo)致索引失效而進行全表掃描。但是可以使用LIKE “name%”。

10.在 where 子句中使用 or 來連接條件,如果or連接的條件有一方?jīng)]有索引,將導(dǎo)致引擎放棄使用索引而進行全表掃描
解決辦法: 將or連接的雙方都建立索引,就可以使用

11.應(yīng)盡量避免在where子句中對字段進行函數(shù)操作,這將導(dǎo)致引擎放棄使用索引而進行全表掃描

12.字符串類型的字段 查詢的時候如果不加引號’’ ,會導(dǎo)致自動進行隱式轉(zhuǎn)換,然后索引失效

到此這篇關(guān)于SQL優(yōu)化的N種方法(小結(jié))的文章就介紹到這了,更多相關(guān)SQL 優(yōu)化內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標簽: MsSQL
相關(guān)文章:
主站蜘蛛池模板: 广平县| 衡东县| 板桥市| 定安县| 高邮市| 临清市| 嘉黎县| 宣威市| 昌都县| 安图县| 宜君县| 兴宁市| 鄂尔多斯市| 海丰县| 石家庄市| 永仁县| 台安县| 綦江县| 曲周县| 霍林郭勒市| 西畴县| 兰溪市| 县级市| 怀安县| 商水县| 泸定县| 阿图什市| 海林市| 冕宁县| 罗甸县| 江川县| 楚雄市| 华容县| 桑植县| 呼伦贝尔市| 德惠市| 额济纳旗| 梅河口市| 靖远县| 遂溪县| 阳曲县|