程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> MySQL手冊版本 5.0.20-MySQL優化(四) (1)(2)

MySQL手冊版本 5.0.20-MySQL優化(四) (1)(2)

編輯:關於PHP編程



想要提高 ORDER BY 的速度,首先要看MySQL能否使用索引而非額外的排序過程。如果不能使用索引,可以試著遵循以下策略:


增加 sort_buffer_size 的值。


增加 read_rnd_buffer_size 的值。


修改 tmpdir,讓它指向一個有很多剩余空間的專用文件系統。如果使用MySQL 4.1或更新,這個選項允許有多個路徑用循環的格式。各個路徑之間在 Unix 上用冒號(':')分隔開來,在 Windows,NetWare以及OS/2 上用分號(';')。可以利用這個特性將負載平均分攤給幾個目錄。注意:這些路徑必須是分布在不同物理磁盤上的目錄,而非在同一個物理磁盤上的不同目錄。


默認情況下,MySQL也會對所有的 GROUP BY col1, col2, ... 查詢做排序,跟 ORDER BY col1, col2, ... 查詢一樣。如果顯式地包含一個有同樣字段列表的 ORDER BY 分句,MySQL優化它的時候並不會損失速度,因為排序總是會發生。如果一個查詢中包括 GROUP BY,但是想要避免對結果排序的開銷,可以通過使用 ORDER BY NULL 來取消排序。例如:


INSERT INTO foo

SELECT a, COUNT(*) FROM bar GROUP BY a ORDER BY NULL;


7.2.10 MySQL 如何優化 LIMIT


在一些情況下,MySQL在碰到一個使用 LIMIT row_count 但沒使用 HAVING

的查詢時會做不同的處理:


如果只是用 LIMIT 來取得很少的一些記錄, MySQL 有時會使用索引,但是更通常的情況是做一個全表掃描。


如果 LIMIT row_count 和 ORDER BY 一起使用,則MySQL在找到 row_count 條記錄後就會停止排序了,而非對整個表進行排序。


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