1.SQL關(guān)鍵字的執(zhí)行的順序
from======》where======》group by======》having======》select======》order by
2.避免全表掃描,將where條件和order by條件后用到的字段建立索引。
開發(fā)初期,表少,索引創(chuàng)建與否,可能對(duì)性能沒啥影響;但是到表記錄多的時(shí)候,缺少索引,可能對(duì)性能的影響會(huì)越來越大。
建立索引的注意點(diǎn)
1)大量重復(fù)數(shù)據(jù)不要建索引
當(dāng)索引列有大量重復(fù)數(shù)據(jù)時(shí),這時(shí)索引并沒有提高查詢效率。
比如:性別sex,男和女各占一半,建索引沒起到作用。
2)索引不是越多越好,增改會(huì)變慢
一個(gè)表的索引最好不要超過6個(gè)。索引雖然提高了select的速度,但是insert和update的速度會(huì)變慢。
3)避免對(duì)索引進(jìn)行一下操作
避免對(duì)索引字段進(jìn)行計(jì)算操作
避免在索引字段上使用in、<>、!=
避免在索引列上使用is null、is not null? ??
避免在索引列上使用函數(shù)
避免在索引列上出現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換
避免建立索引的列中使用空值
總結(jié):索引分為:主鍵索引、普通索引、唯一索引、文本索引
3.where
1)避免在where后使用in、<>、!=、null、in、or、函數(shù)、表達(dá)式操作
2)exists替代in
3)like也會(huì)全表掃描
4.explain解釋及個(gè)字段含義
explain顯示MySQL如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優(yōu)化的查詢語句。
1)id:id是一組數(shù)字,表示查詢的執(zhí)行順序
2)select_type:查詢類型
SIMPLE簡單表:不使用子查詢或連接
PRIMARY主查詢:外層的查詢
UNION:第二個(gè)或后面的查詢語句
SUBQUERY:子查詢中的第一個(gè)select
3)table:輸出結(jié)果的表
總之:possible_keys是可能用到的索引、key_lan和rows的值越小越好