* 1. 使用mysql explain 對sql執行效率進行檢測 ,explain顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優化的查詢語句。
* 1) 使用方法:在select語句前加上explain即可
* 2) explain 分析結果形式如下:
* table | type | possible_keys | key | key_len | ref | rows | Extra
* explain 分析結果形式中各屬性含義:
* table :顯示這一行的數據是關于哪張表的
* type :這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、indexhe和ALL
* possible_keys :顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從WHERE語句中選擇一個合適的語句
* key :實際使用的索引。如果為NULL,則沒有使用索引。很少的情況下,MYSQL會選擇優化不足的索引。這種情況下,可以在SELECT語句中使用USE INDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MYSQL忽略索引
* key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好
* ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數
* rows:MYSQL認為必須檢查的用來返回請求數據的行數
* Extra :返回的描述的意義
* 2. 盡量使用 "inner join " 查詢替換子查詢條件中的 "in " ,防止由于數據量過大,引發數據庫掛起問題
* 3.使用索引應注意問題:
* 1)查詢語句的where條件后邊使用 “!=”或“<>”時,索引不生效,和普通字段一樣
* 2)查詢語句的where條件后邊使用字符串函數或其他函數,索引不生效,和普通字段一樣
* 3)使用連接(join)查詢時,只有在主鍵和外鍵的數據類型相同時索引才會生效
* 4)查詢語句的where條件后邊使用Like關鍵字應注意,like '%jx%' 和 like '%jx'方式索引均不生效, like 'jx%'方式索引生效
* 5)InnoDB數據表不支持全文索引