mysql - sql问题请教
高洛峰
高洛峰 2017-04-17 12:59:54
0
1
470

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教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(1)
迷茫

如果你是用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 上,路徑應以分號 (“;”) 分隔。路徑應該命名位於不同實體磁碟上的檔案系統中的目錄,而不是同一磁碟上的不同分割區。

除此之外,也可以試試複合索引,可以看看這裡
http://www.cnblogs.com/anywei/archive/2011/12/12/mysql.html

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!