色久综合AV在线_亚洲人成在线观看网站高清_av网页中文字幕_欧洲无码三级片在线看

?
徐州北大青鳥
當前位置: 主頁 > 學在青鳥 > 編程技巧 >

怎樣才能寫出人類高質(zhì)量的SQL語句?

時間:2021-09-03 10:58來源:未知 作者:代碼如詩 點擊:
1、查詢中盡量避免使用SELECT * 以及加上LIMIT限制 當服務(wù)器響應(yīng)客戶端請求時,客戶端必須完整的接收整個返回結(jié)果,而不能簡單的只取前面幾條結(jié)果,然后讓服務(wù)器停止發(fā)送。查詢應(yīng)盡
1、查詢中盡量避免使用SELECT * 以及加上LIMIT限制
 
當服務(wù)器響應(yīng)客戶端請求時,客戶端必須完整的接收整個返回結(jié)果,而不能簡單的只取前面幾條結(jié)果,然后讓服務(wù)器停止發(fā)送。查詢應(yīng)盡可能只返回必要數(shù)據(jù),減小通信數(shù)據(jù)包大小和數(shù)量,提高效率。
 
2、IN 和 NOT IN 要慎用,會導致全表掃描。
 
MySQL優(yōu)化器會選擇代價最小的方式執(zhí)行,IN和NOT IN 都可能索引失效,不是絕對的。
 
3、LIKE 導致全表掃描
 
LIKE導致索引失效是因為沒遵循最佳左前綴法則。字符串B-Tree排序方式:先按照第一個字母排序,如果第一個字母相同,就按照第二個字母排序,以此類推。
 
%號放右邊
 
由于B-Tree的索引順序,是按照首字母的大小進行排序,前綴匹配又是匹配首字母。所以可以在B+樹上進行有序的查找,查找首字母符合要求的數(shù)據(jù)。所以有些時候可以用到索引。
 
4、聯(lián)合索引需遵循最佳左前綴法則
 
GLS_CODE,BARCODE,SKU_ID 創(chuàng)建了聯(lián)合索引,當查詢語句where條件中沒有GLS_CODE列不會走聯(lián)合索引。創(chuàng)建這種多列聯(lián)合索引時,列的順序非常重要。
 
B-Tree聯(lián)合索引組合順序與創(chuàng)建時列的順序是一樣的,第一個字段列的順序是確定的,其他列的順序都是不確定的。B-Tree索引的限制,如果查詢不是按照索引創(chuàng)建時的順序,則無法使用索引。
 
在查詢中where條件里存在聯(lián)合索引第一列,順序不一致也是可以走索引的。這里是因為MySQL優(yōu)化器會對查詢重新排序。
 
5、不要在索引列上做任何操作
 
索引列存在計算、函數(shù)、類型轉(zhuǎn)換,會導致索引失效進行全表掃描。
 
6、is null,is not null可能導致索引失效
 
7、要注意where,order by,group by后面的列,多表關(guān)聯(lián)的列是否已加索引,優(yōu)先考慮組合索引
 
8、where后面的列要注意隱式轉(zhuǎn)換,會導致索引失效
 
不加單引號時,是字符串跟數(shù)字的比較,它們類型不匹配,MySQL會做隱式的類型轉(zhuǎn)換,把它們轉(zhuǎn)換為浮點數(shù)再做比較,最后導致索引失效。
試聽課
(責任編輯:代碼如詩)
------分隔線----------------------------
欄目列表
推薦內(nèi)容