表结构如下:
当我运行此查询时,执行时间约为2-3分钟:
select id,name,infohash,files from tb_torrent where id between 0 and 10000;
只有超过200,000个数据,为什么执行速度如此之慢?以及如何解决它?
答案 0 :(得分:1)
不必要地使用BIGint并不足以解释这种迟缓。让我们来寻找其他问题。
这个“关键”图标是否表示id
上有索引?经验是PRIMARY KEY
?
ENGINE
正在使用什么?如果它是MyISAM,那么你的缺点是PK不会与数据“聚集”,从而使10K查找速度变慢。
你会用10K行做什么?想想网络成本。以及客户端的内存成本。
但也许这是真正的问题......如果这是InnoDB,并且TEXT
列是“大”,那么这些值将被存储为“不记录”。这导致另一个磁盘命中以获得任何大文本值。将它们更改为VARCHAR(...)
的实际最大值。
你有多少内存? innodb_buffer_pool_size
的价值是多少?你有两次查询时间吗? (第一次是I / O绑定;第二次可能正在点击缓存。表格有多大(以MB或GB为单位)?