Задать вопрос
@maksim_fix
Junior PHP developer

Как ограничить область поиска в mysql?

Есть таблица, в ней много записей. Как я могу ограничить область, в которой происходит поиск(SELECT * from post where status = 1)? Например, пусть ищет лишь в первых 1 млн записях. Мне важно, чтобы mysql не проходился по всем 13 млн записей. А анализируя запросы, я вижу, что так и происходит. Пусть записи хранятся, но выборка идет лишь из первого миллиона записей. Пример:
MariaDB [yii2advanced]> DESCRIBE select * from scan limit 1;
+------+-------------+-------+------+---------------+------+---------+------+----------+-------+
| id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows     | Extra |
+------+-------------+-------+------+---------------+------+---------+------+----------+-------+
|    1 | SIMPLE      | scan  | ALL  | NULL          | NULL | NULL    | NULL | 13460011 |       |
+------+-------------+-------+------+---------------+------+---------+------+----------+-------+

Еще пример:
MariaDB [yii2advanced]> DESCRIBE select * from scan where url like "%1%" limit 20;
+------+-------------+-------+------+---------------+------+---------+------+----------+-------------+
| id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows     | Extra       |
+------+-------------+-------+------+---------------+------+---------+------+----------+-------------+
|    1 | SIMPLE      | scan  | ALL  | NULL          | NULL | NULL    | NULL | 13460011 | Using where |
+------+-------------+-------+------+---------------+------+---------+------+----------+-------------+

Повторюсь еще раз, нужно искать только в первом миллионе записей
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Если id autoincrement и пробелов в нумерации особо нет, то можно where id < 1000001
Ну или узнайте, какой там у вас id на миллионном месте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы