一直在糾結mysql查詢優化的問題,看了好多的文章思緒有點亂,到底要怎麼樣纔會獲得最優的優化語句呢。 mysql
大概我記得的 sql
1.查詢條件 = < > >= <= in 都會用到索引,可是即便是用到索引,在有的時候範圍查詢的時候也會進行全盤掃描使用索引,在這種範圍查詢時若是能顯示行數的話 查詢會快不少。可是這並不能解決咱們的問題,這時候須要加入強制索引force index (field) 強制使用索引,在查詢的時候mysql只是用一個索引進行查詢,因此若是where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。若是where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。select * from users where YEAR(adddate)<2007,將在每一個行上進行運算,這將致使索引失效而進行全表掃描.只要列中包含有NULL值都將不會被包含在索引中,複合索引中只要有一列含有NULL值,那麼這一列對於此複合索引就是無效的。因此咱們在數據庫設計時不要讓字段的默認值爲NULL。 數據庫
2.創建適合的索引,單個索引,聯合索引,全文索引,惟一索引等。索引也不能創建過多,大數量時會發生可怕的I/O讀寫緩慢。。。 數據結構
3.表引擎的選擇MYISAM,INNODB這兩種表的選擇,區別纔有不一樣的數據結構方式,和不一樣的文件記錄方式,M比較適合小表查詢 讀取索引文件很快找到數據,IDB表適合大數據量的存儲查詢,索引和數據在同一個文件,使得I/O操做很快。2表的有些區別的。 數據庫設計
4.查看語句執行可使用explain可是這個須要學習的。http://baike.baidu.com/view/9416916.htm 學習
待續~~什麼時候使用匯集索引或非彙集索引? 大數據