o我有一个包含 200 万个寄存器的表,但它会很快增长。基本上,该表包含具有相应描述符的图像的兴趣点。当我尝试执行选择在空间上靠近查询点的点的查询时,总执行时间太长了。更准确地说,持续时间/获取 = 0.484 秒 / 27.441 秒。查询非常简单,只返回约 17000 行。
我的查询是:
SELECT fp.fingerprint_id, fp.coord_x, fp.coord_y, fp.angle,
fp.desc1, fp.desc2, fp.desc3, fp.desc4, fp.desc5, fp.desc6, fp.desc7, fp.desc8, fp.desc9, fp.desc10,
fp.desc11, fp.desc12, fp.desc13, fp.desc14, fp.desc15, fp.desc16, fp.desc17, fp.desc18, fp.desc19,
fp.desc20, fp.desc21, fp.desc22, fp.desc23, fp.desc24, fp.desc25, fp.desc26, fp.desc27, fp.desc28,
fp.desc29, fp.desc30, fp.desc31, fp.desc32
FROM fingerprint fp
WHERE
fp.is_strong_point = 1 AND
(coord_x BETWEEN 193-40 AND 193+40) AND (coord_y BETWEEN 49-15 AND 49+15 )
LIMIT 1,1000000;
这就是我所做的。
- 我试图改变
key_buffer_size
,my.ini
但没有看到太大的变化。 - 此外,我尝试将 coord_x 和 coord_y 设置为索引,但查询时间变慢了。
- 该表按 coord_x 字段的范围进行分区,这给了我更好的结果。
如何减少获取时间?是否有可能将其减少到毫秒?