SQL執行頻率
?
?慢查詢日志
慢查詢日志記錄了所有執行時間超過指定參數(long_query_time,單位:秒,默認10秒)的所有
SQL語句的日志。
MySQL的慢查詢日志默認沒有開啟,我們可以查看一下系統變量 slow_query_log。
如果要開啟慢查詢日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:
?
?profile詳情
?
?
?
?explain
?
?索引使用
驗證索引效率
在講解索引的使用原則之前,先通過一個簡單的案例,來驗證一下索引,看看是否能夠通過索引來提升
數據查詢性能。在演示的時候,我們還是使用之前準備的一張表 tb_sku , 在這張表中準備了1000w
的記錄。
?
這張表中id為主鍵,有主鍵索引,而其他字段是沒有建立索引的。 我們先來查詢其中的一條記錄,看看里面的字段情況,執行如下SQL:
?
?
?
?
?最左前綴法則
如果索引了多列(聯合索引),要遵守最左前綴法則。最左前綴法則指的是查詢從索引的最左列開始,并且不跳過索引中的列。如果跳躍某一列,索引將會部分失效(后面的字段索引失效)。
以 tb_user 表為例,我們先來查看一下之前 tb_user 表所創建的索引。
?
在 tb_user 表中,有一個聯合索引,這個聯合索引涉及到三個字段,順序分別為:profession,
age,status。
對于最左前綴法則指的是,查詢時,最左邊的列,也就是profession必須存在,否則索引全部失效。
而且中間不能跳過某一列,否則該列后面的字段索引將失效。 接下來,我們來演示幾組案例,看一下
具體的執行計劃:
?
?
?
?
?