程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql慢查詢

Mysql慢查詢

編輯:MySQL綜合教程

Mysql慢查詢


1、查看慢查詢日志是否開啟:show variables like ‘slow%’;
這裡寫圖片描述
slow_launch_time:查詢超過時間才記錄,show_launch_time=2,表示查詢超過2s才記錄日志
slow_query_log:ON表示開啟,OFF表示關閉
show_query_log_file:慢查詢記錄日志存放位置

2、開啟慢查詢日志:set global slow_query_log = ON;(需要root權限)

3、查詢long_query_time 的值:show variables like ‘long%’;
這裡寫圖片描述數據庫服務器與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%’ 時索引無效

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved