У меня есть таблица с 2 миллионами регистров, но она будет расти гораздо быстрее. В основном эта таблица содержит точки интереса изображения с соответствующими дескрипторами. Когда я пытаюсь выполнить запрос, который выбирает точки, расположенные в пространстве рядом с точками запроса, общее время выполнения занимает слишком много времени. Точнее Duration/Fetch = 0.484 sec/27.441 sec. И запрос довольно прост, который возвращает только ~ 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
@Andriy Я надеюсь, что вы также знаете, что MySQL может также использовать более одного модуля DB. MyISAM и innodb, например ... – ITroubs
@Andriy, если вы используете такой инструмент, как phpmyadmin, тогда вы сможете увидеть, какой механизм базы данных использует ваша таблица. – ITroubs