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
in my.ini
,但没有看到太大的变化。
- 另外,我尝试将 coord_x 和 coord_y 设置为索引,但查询时间变得更慢。
- 该表按 coord_x 字段的范围进行分区,这给了我更好的结果。
如何减少获取时间?是否可以将其减少到毫秒?