国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

查詢mysql中執行效率低的sql語句的方法

2024-07-24 12:48:42
字體:
來源:轉載
供稿:網友

一些小技巧
1. 如何查出效率低的語句?
在MySQL下,在啟動參數中設置 --log-slow-queries=[文件名],就可以在指定的日志文件中記錄執行時間超過long_query_time(缺省為10秒)的SQL語句。你也可以在啟動配置文件中修改long query的時間,如:

復制代碼 代碼如下:

 # Set long query time to 8 seconds
    long_query_time=8

2. 如何查詢某表的索引?
可使用SHOW INDEX語句,如:

復制代碼 代碼如下:

 SHOW INDEX FROM [表名]

3. 如何查詢某條語句的索引使用情況?
可用EXPLAIN語句來看一下某條SELECT語句的索引使用情況。如果是UPDATE或DELETE語句,需要先轉換為SELECT語句。
4. 如何把導出INNODB引擎的內容到錯誤日志文件中?
我們可以使用SHOW INNODB STATUS命令來查看INNODB引擎的很多有用的信息,如當前進程、事務、外鍵錯誤、死鎖問題和其它一些統計數據。如何讓該信息能記錄在日志文件中呢?只要使用如下語句創建innodb_monitor表,MySQL就會每15秒鐘把該系統寫入到錯誤日志文件中:

復制代碼 代碼如下:

CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;

如果你不再需要導出到錯誤日志文件,只要刪除該表即可:

復制代碼 代碼如下:

 DROP TABLE innodb_monitor;

5. 如何定期刪除龐大的日志文件?
只要在啟動配置文件中設置日志過期時間即可:

復制代碼 代碼如下:

 expire_logs_days=10

經驗教訓
1. 重點關注索引
下面以表TSK_TASK表為例說明SQL語句優化過程。TSK_TASK表用于保存系統監測任務,相關字段及索引如下:

    ID:主鍵;
    MON_TIME:監測時間;建了索引;
    STATUS_ID:任務狀態;與SYS_HIER_INFO.ID建立了外鍵關系。


注MySQL自動會為外鍵建立索引,在本次優化過程中,發現這些自動建立的外鍵索引會對SQL語句的效率產生不必要的干擾,需要特別注意!

首先,我們在日志文件中查到下面語句的執行比較慢,超過10秒了:

復制代碼 代碼如下:

 # Query_time: 18 Lock_time: 0 Rows_sent: 295 Rows_examined: 88143
    select * from TSK_TASK WHERE STATUS_ID = 1064 and MON_TIME >= '2007-11-22' and MON_TIME < '2007-11-23';

哦,原來在88143條記錄中要查出符合條件的295條記錄,那當然慢了。趕緊用EXPLAIN語句看一下索引使用情況吧:

    +----+-------------+----------+------+----------------------------------------------------------+------------------------------------+---------+-------+--------+-------------+

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松潘县| 襄城县| 乌海市| 汤原县| 深圳市| 邯郸市| 耒阳市| 读书| 望城县| 繁昌县| 阿拉善盟| 嘉义市| 包头市| 玉田县| 永仁县| 本溪市| 读书| 唐河县| 桓台县| 孟津县| 遵化市| 康定县| 鹤庆县| 丘北县| 怀宁县| 嘉义市| 七台河市| 鹤庆县| 汉寿县| 文成县| 临桂县| 招远市| 宿迁市| 洪洞县| 梅河口市| 潍坊市| 长海县| 南昌市| 池州市| 辽阳县| 平泉县|