我有一个MySQL表,AdsPOI
其结构如下:
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
在此表中,当前约有700万行,但它每分钟都在增长,越来越大。该表是一个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行。
有什么方法可以固定这些查询吗?这些查询运行这么慢是正常现象吗?我怎样才能使它们更快?
您可以尝试通过增加innodb_buffer_pool_size并因此将最近访问的表移入RAM来优化磁盘I / O。
https://dev.mysql.com/doc/refman/5.5/zh-CN/optimizing-innodb-diskio.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句