Mysql慢查詢

1、查看慢查詢日志是否開啟:show variables like ‘slow%’;
這裡寫圖片描述
slow_launch_time:查詢超過時間才記錄,show_launch_time=2,表示查詢超過2s才記錄日志
slow_query_log:ON表示開啟,OFF表示關閉
show_query_log_file:慢查詢記錄日志存放位置vcD4NCjxwPjKhor+qxvTC/bLp0a/I1da+o7pzZXQgZ2xvYmFsIHNsb3dfcXVlcnlfbG9nID0gT047o6jQ6NKqcm9vdMioz96jqTwvcD4NCjxwPjOhorLp0a9sb25nX3F1ZXJ5X3RpbWUgtcTWtaO6c2hvdyB2YXJpYWJsZXMgbGlrZSAmbHNxdW87bG9uZyUmcnNxdW87OzxiciAvPg0KPGltZyBhbHQ9″這裡寫圖片描述” src=”https://www.2cto.com/uploadfile/Collfiles/20151114/2015111409394113.png” title=”鷌馇瓊ZjYh?畓輯奼底鷌糙铻??畨幗欿 ?iHB?6…?https://www.2cto.com/database/” target=”_blank” class=”keylink”>資料庫伺服器與WEB伺服器是獨立分開的情況下。你將會經歷非常漫長的網絡延遲,僅僅是因為數據不必要的在伺服器之間傳輸。

使用連接(JOIN)來代替子查詢(Sub-Queries)。連接(JOIN).. 之所以更有效率一些,是因為MySQL不需要在內存中創建臨時表來完成這個邏輯上的需要兩個步驟的查詢工作。

使用ENUM、CHAR 而不是VARCHAR,使用合理的字段屬性長度

盡可能的使用NOT NULL

固定長度的表會更快

拆分大的DELETE 或INSERT 語句

查詢的列越小越快
Where條件

在查詢中,WHERE條件也是一個比較重要的因素,盡量少並且是合理的where條件是很重要的,盡量在多個條件的時候,把會提取盡量少數據量的條件放在前面,減少後一個where條件的查詢時間。

有些where條件會導致索引無效:

where子句的查詢條件裡有!=,MySQL將無法使用索引。

where子句使用瞭Mysql函數的時候,索引將無效,比如:select * from tb where left(name, 4) = ‘xxx’

使用LIKE進行搜尋匹配的時候,這樣索引是有效的:select * from tbl1 where name like ‘xxx%’,而like ‘%xxx%’ 時索引無效

You May Also Like