php – 如何快速使这个mysql查询?我的桌子里面有数百万的数据

我有一个名为ad_view的表,它在该表中有1890万个数据.

这是ad_vew的表格设计

ad_view
-------
ad_id
network_id
publisher_id
landingpage_id
advertiser_id

我使用此查询来获取ad_id和ad_id的计数,具体取决于network_id,因此在这种情况下,network_id为4.

select ad_id,count(ad_id) as strength 
from ad_view 
where network_id = 4 
group by ad_id 
order by strength desc 
limit 10

此查询需要永远加载.您有什么建议如何快速进行此查询?

我不是数据库专家,如果需要重新设计这个表,我会这样做.

任何建议将不胜感激,谢谢!

最佳答案
这将有助于:

ALTER TABLE ad_view ADD INDEX (network_id, ad_id).

确保您已调整innodb_buffer_pool_size以将表中频繁请求的部分保存在内存中.

您可能喜欢我的演示文稿,How to Design Indexes, Really.该演示文稿不会用于GROUP BY的索引编制,但您可以将其视为范围条件.

转载注明原文:php – 如何快速使这个mysql查询?我的桌子里面有数百万的数据 - 代码日志