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