日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql的where字句调优_mysql中select和where子句优化的总结

發布時間:2024/7/5 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql的where字句调优_mysql中select和where子句优化的总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章給大家帶來的內容是關于mysql中select和where子句優化的總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

數據庫優化:

1.可以在單個SQL語句,整個應用程序,單個數據庫服務器或多個聯網數據庫服務器的級別進行優化

2.數據庫性能取決于數據庫級別的幾個因素,例如表,查詢和配置設置

3.在數據庫級別進行優化,在硬件級別進行優化,平衡可移植性和性能

4.合適的結構,合適的數據類型;執行頻繁更新的應用程序大量表(少列);分析大量數據的應用程序少量表(多列);選擇合適的存儲引擎和索引;

5.壓縮適用于InnoDB表的各種工作負載,以及只讀MyISAM表

6.選擇合適的鎖定策略;InnoDB存儲引擎可以處理大多數鎖定問題

7.配置的主要內存區域是InnoDB緩沖池和MyISAM密鑰緩存。

8.優化select語句,這方面技巧同樣適用于其他帶where的delete語句等,在where子句的列上設置索引;索引對于引用多個列如join和外鍵尤其重要

select where子句優化:

1.調整查詢的結構,例如函數調用,為結果集中的每一行只調用一次,為表中的每一行只調用一次

2.減少查詢中的全表掃描數

3.定期使用ANALYZE TABLE語句使表統計信息保持最新

4.了解特定于每個表的存儲引擎的調優技術,索引技術和配置參數

5.優化InnoDB表的單查詢事務

6.通過閱讀EXPLAIN計劃并調整索引,WHERE子句,連接子句等來調查特定查詢的內部詳細信息

7.調整MySQL用于緩存的內存區域的大小和屬性。通過有效使用InnoDB緩沖池,MyISAM密鑰緩存和MySQL查詢緩存

8.where條件,去掉不必要的括號,恒定折疊,恒定條件去除,減少不必要的邏輯

9.被索引使用的常量表達式只計算一次

10.count(*)直接從表信息中查詢;當只有一張表時,not null表達式也是這樣

11.如果不使用GROUP BY或聚合函數(COUNT(),MIN()等),HAVING將與WHERE合并

12.常量表,只有一行或空表;where子句作用在primary key或者unique索引上

13.如果ORDER BY和GROUP BY子句中的所有列都來自同一個表,則在連接時首選該表

14.如果order by子句和group by子句不一樣,或來自不同的表,則會創建臨時表

15.如果使用SQL_SMALL_RESULT修飾符,MySQL將使用內存中的臨時表

16.MySQL甚至無需咨詢數據文件即可只從索引中讀取行

17.在輸出每一行之前,將跳過與HAVING子句不匹配的行

以下表被用作常量表:SELECT * FROM t WHERE primary_key=1;

SELECT * FROM t1,t2

WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

以下查詢運行速度非常快:SELECT COUNT(*) FROM tbl_name;

SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;

SELECT MAX(key_part2) FROM tbl_name

WHERE key_part1=constant;

SELECT ... FROM tbl_name

ORDER BY key_part1,key_part2,... LIMIT 10;

SELECT ... FROM tbl_name

ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;假設索引列是數值型,以下查詢僅用到了索引樹:SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;

SELECT COUNT(*) FROM tbl_name

WHERE key_part1=val1 AND key_part2=val2;

SELECT key_part2 FROM tbl_name GROUP BY key_part1;

以下查詢使用索引按排序順序取回數據,不需要單獨排序SELECT ... FROM tbl_name

ORDER BY key_part1,key_part2,... ;

SELECT ... FROM tbl_name

ORDER BY key_part1 DESC, key_part2 DESC, ... ;

總結

以上是生活随笔為你收集整理的mysql的where字句调优_mysql中select和where子句优化的总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。