mysql之高效sql注意

2021-08-28 01:59:45 字數 1381 閱讀 9823

今天扯淡下我們寫sql應該注意些什麼,歡迎拍磚,互相學習!!!

注意點說明:

1.全值匹配最好

2.最左字首法則,如果索引了多列,要遵循最左字首法則。指的是查詢從索引的最左前列開始並且不跳過索引中的列

3.不在索引列上做任何操作(計算、函式、自動或手動型別轉換),會導致索引失效而轉向全表掃瞄

4.範圍條件右邊的條件無法使用索引

5.盡量使用覆蓋索引(只訪問索引的查詢,索引列和查詢列一致),減少select *

6.使用 !=或<> 無法使用索引會導致全表掃瞄

7.is null,is not null 也無法使用索引

8.like以%開頭,索引失效會變成全表掃瞄。解決:開頭不用%可使用索引

9.字串不加單引號索引失效變成全表掃瞄

10.少於or,用他會索引失效

針對以上注意的檢測題

小表驅動大表,即小的資料集驅動大的資料集

select * from a where id in (select id from b)

當b表的資料集小於a表的資料集時,用in優於exists

select * from a where exists (select 1 from b where b.id = a.id)

當a表的資料集小於b表的資料集時,用exists優於in

order by 和where都滿足左字首法則。 組合索引( age,birth)     這樣的查詢sql會引起檔案排序 select * from a order by age asc,birth desc ,為什麼呢?答:公升降機累不累?

SQL優化之高效SQL語句

一 sql語句的執行步驟 from子句組裝來自不同資料來源的資料 from後面的表關聯,是自右向左解析的,即在寫sql的時候,盡量把資料量大的表放在最右邊來進行關聯 where子句基於指定的條件對記錄行進行篩選 where條件的解析順序是自下而上,從右到左的,即應把能篩選出大量資料的條件放在wher...

QtInternal 之 高效使用QString

usingqstringeffectively 簡體中文版 如果你對翻譯wiki感興趣,請參考wiki中文幫助 從c字串建立乙個qstring可能會涉及到malloc。舉例來說,下面的 可能會有乙個隱式malloc呼叫的代價。應用程式開發者在main 函式中設定 qtextcodec setcode...

SQL 高效執行注意事項(三)

合理配置tempdb 1.tempdb在sql server停掉,重啟時會自動的drop,re create.根據model資料庫會預設建立乙個新的 2.tempdb對io的要求比較高,最好分配到高io的磁碟上且與其他的資料檔案分到不用的磁碟上,以提高讀寫效率 3.應該根據根據cpu個數來配置tem...