首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL大表查询非常慢。

MySQL大表查询非常慢。
EN

Stack Overflow用户
提问于 2016-06-14 10:54:24
回答 2查看 729关注 0票数 0

我有一个MySQL表AdsPOI,它具有以下结构:

代码语言:javascript
复制
 AdsPOIId  (bigint 20) PRIMARY, AUTO INCREMENT
 Distance  (int 6) not indexed
 poi_POIId (bigint 20) INDEXED, references another table POI
 ads_AdId  (bigint 20) INDEXED, references another table Ads

在这个表中,目前有约7.000.000行,但它每分钟都在增长,越来越大。这个表是一个InnoDB表。即使我尝试对表进行最简单的查询,例如:SELECT * FROM AdsPOI ORDER BY ads_AdId,该查询也需要大约20秒的时间才能运行。当我尝试一个更复杂的查询时,比如SELECT poi_POIId FROM AdsPOI WHERE ads_AdId > 5 AND ads_AdId < 300000 GROUP BY poi_POIId,查询大约需要1分20秒,并返回大约130.000行。

有什么方法可以加快这些查询吗?这些查询运行得如此缓慢,这是正常的吗?我怎么能试着让他们更快?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-14 11:01:56

您可以通过增加innodb_buffer_pool_size来优化磁盘I/O,从而将最近访问的表移到RAM中。

https://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-diskio.html

票数 0
EN

Stack Overflow用户

发布于 2016-06-14 11:14:25

对于关系数据库和大量数据,您只能做这么多事情。如果您已经在一个正确索引的表中有数百万个条目,并且它正在快速增长,那么您可以预期查询会变得更慢。添加更强大的硬件是一种选择。

如果您可以在没有外键关系的情况下生活,那么为海量数据优化的大数据NoSQL工具(如MongoDB )可能是一个更好的设计选择。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37809986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档