84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
select a.,b from count a, user b where a.aid = b.aid order by b.count desc limit 10
在count字段中排名前10的字段,找出aid相同的另外一个表的所有字段。 这句能实现,但效率太低,几万记录查询都几秒了。有简单的办法吗
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
如果你是用Mysql,我覺得可以參考下面這裡的內容https://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
為了提高 ORDER BY 速度,請檢查是否可以讓 MySQL 使用索引而不是額外的排序階段。如果這不可能,您可以嘗試以下策略: 增加 sort_buffer_size 變數值。 增加 read_rnd_buffer_size 變數值。 透過將列宣告為容納儲存在其中的值所需的大小,可以減少每行使用的 RAM。例如,如果值不超過 16 個字符,則 CHAR(16) 優於 CHAR(200)。 更改 tmpdir 系統變數以指向具有大量可用空間的專用檔案系統。變數值可以列出以循環方式使用的多個路徑;您可以使用此功能將負載分散到多個目錄中。在 Unix 上,路徑應以冒號 (“:”) 分隔;在 Windows、NetWare 和 OS/2 上,路徑應以分號 (“;”) 分隔。路徑應該命名位於不同實體磁碟上的檔案系統中的目錄,而不是同一磁碟上的不同分割區。
為了提高 ORDER BY 速度,請檢查是否可以讓 MySQL 使用索引而不是額外的排序階段。如果這不可能,您可以嘗試以下策略:
增加 sort_buffer_size 變數值。
增加 read_rnd_buffer_size 變數值。
透過將列宣告為容納儲存在其中的值所需的大小,可以減少每行使用的 RAM。例如,如果值不超過 16 個字符,則 CHAR(16) 優於 CHAR(200)。
更改 tmpdir 系統變數以指向具有大量可用空間的專用檔案系統。變數值可以列出以循環方式使用的多個路徑;您可以使用此功能將負載分散到多個目錄中。在 Unix 上,路徑應以冒號 (“:”) 分隔;在 Windows、NetWare 和 OS/2 上,路徑應以分號 (“;”) 分隔。路徑應該命名位於不同實體磁碟上的檔案系統中的目錄,而不是同一磁碟上的不同分割區。
除此之外,也可以試試複合索引,可以看看這裡http://www.cnblogs.com/anywei/archive/2011/12/12/mysql.html
如果你是用Mysql,我覺得可以參考下面這裡的內容
https://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
除此之外,也可以試試複合索引,可以看看這裡
http://www.cnblogs.com/anywei/archive/2011/12/12/mysql.html