共計 1943 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
丸趣 TV 小編給大家分享一下 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 中 select 和 where 子句優化的方法有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!