У меня есть таблица numbers
, которая выглядит так
id (int) | start (int u) | end (int u)
1 50 100
2 250 396
3 900 1000
В нем около 400 тыс. Строк, и данные в нем никогда не изменяются.
Диапазоны не перекрываются.
Я выполняю запрос, подобный этому:
SELECT id FROM numbers WHERE *somenumber* BETWEEN start AND end LIMIT 1
Запрос занимает около 3 с., Чтобы завершить, что является вечностью, поэтому я попытался найти некоторые решения, чтобы сделать его быстрее.
Единственное, что я придумал, - это наложение нескольких индексов на начальный и конечный столбцы, но в действительности это сделало его МЕДЛЕННЫМ, тот же самый запрос теперь удивительно занимает 0,9 секунды, чтобы закончить с ИНДЕКСАМИ, присутствующими в двух столбцах.
Итак, как я могу сделать этот запрос быстрее, если это вообще возможно?