Убедитесь, что вы используете индекс, иначе он выполняет полное сканирование таблицы. Вы можете посмотреть на план выполнения, чтобы проверить это или вызвать проблему, используя предложение ORDER BY
(в индексированном столбце). Вот больше информации .
Ваша таблица не такая большая, 300 000 строк. Однако при приближении к таблице возникают проблемы с производительностью. Единственное реальное решение для этого - подделать предложение limit. Иметь поле автоматического приращения, которое нумерует строки от 1 до 300 000, а затем делает:
SELECT *
FROM mytable
WHERE field BETWEEN 250000 and 250100
или аналогичный. Это может быть проблематичным или невозможным, если вы часто удаляете строки, но я склонен обнаруживать, что более старые данные имеют тенденцию меняться меньше, поэтому вы можете несколько оптимизировать их, используя LIMIT
для первых 100 000 строк и столбец суррогатной подкачки за этим. 1010 *