Есть таблица, в ней много записей. Как я могу ограничить область, в которой происходит поиск(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 |
+------+-------------+-------+------+---------------+------+---------+------+----------+-------------+
Повторюсь еще раз, нужно искать только в первом миллионе записей