o我有一张拥有2百万个寄存器的表,但它的增长速度会更快。基本上这个表格包含具有各自描述符的图像的兴趣点。当我试图执行查询时,选择查询点的空间位置附近的点时,总执行时间会过长。更精确的持续时间/取数= 0.484秒/27.441秒。查询非常简单,只返回约17000行。MySQL获取时间优化
我的查询是:
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字段的范围分区,这给了我更好的结果。
我该如何缩短取时间?是否有可能将其减少到毫秒?
我知道在Oracle中它应该更快,但我必须在这个项目中使用MySQL。我在想在MySQL配置中可能会有一些技巧?感谢您的回答。 – andriy 2013-03-21 12:21:41
@Andriy我希望你也知道MySQL也可以使用多个数据库引擎。 MyISAM和innodb,例如... – ITroubs 2013-03-21 12:22:49
@Andriy如果你使用的是像phpmyadmin这样的工具,那么你将能够看到你的表使用的是什么样的数据库引擎。 – ITroubs 2013-03-21 12:24:20