1.選擇有效率的表連接配接順序
這個你要了解SQL語句執行的過程,就比如from:子句--執行順序為從後往前、從右到左,表名(最後面的那個表名為驅動表,執行順序為從後往前, 是以資料量較少的表盡量放後)。
2.避免使用*
SQL解析的時候,需要将 * 轉換為所有列名,這個工作需要依靠資料字典來完成。
3.用where子句替換having子句
where子句搜尋條件在進行分組操作之前應用;而having自己條件在進行分組操作之後應用。
避免使用having子句,having子句隻會在檢索出所有紀錄之後才對結果集進行過濾,這個處理需要排序,總計等操作。
4.使用索引來避免排序操作
order by後面的字段上建有索引,将會大大提升效率!
5.不要在選擇性較低的字段建立索引(enum枚舉類型)
6.避免對列的操作
這點非常重要,不要在where條件中對字段進行數學表達式運算,任何對列的操作都可能導緻全表掃描。
7.盡量去掉"IN",“OR”
含有"IN"、"OR"的where子句常會使用工作表,使索引失效。
8.用exists、not exists和in、not in互相替代
IN适合于外表大而内表小的情況;exists适合于外表小而内表大的情況,自己了解下。