SergeyPechenyuk
Новичок
"Подцепка" индекса в запросе с JOIN
Здравствуйте.
Есть запрос "select c.id from TABLE c LEFT JOIN TABLE2 s on c.field=s.field where s.field2=1;", отрабатывает корректно, но оооооочень долго, т.к. не подцепляет индекс. Говорит, что подцепка индекса IDX_PARAM возможна, но на самом деле не подцепляет. Почему так? Помогите пожалуйста
mysql> explain select c.id from TABLE c LEFT JOIN TABLE2 s on c.field=s.field where s.field2=1;
+----+-------------+-------+------+--------------------------+----------------+---------+------------------------+----------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+--------------------------+----------------+---------+------------------------+----------+--------------------------+
| 1 | SIMPLE | c | ALL | IDX_PARAM | NULL | NULL | NULL | 25770871 | |
| 1 | SIMPLE | s | ref | IDX_STATE | IDX_STATE | 10 | base.c.field,const | 5 | Using where; Using index |
+----+-------------+-------+------+--------------------------+----------------+---------+------------------------+----------+--------------------------+
2 rows in set (0.00 sec)
mysql> show index from TABLE;
+---------------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| TABLE | 0 | PRIMARY | 1 | id | A | 3 | NULL | NULL | | BTREE | |
| TABLE | 1 | IDX_PARAM | 1 | field | A | 3 | NULL | NULL | | BTREE | |
+---------------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
2 rows in set (0.00 sec)
Здравствуйте.
Есть запрос "select c.id from TABLE c LEFT JOIN TABLE2 s on c.field=s.field where s.field2=1;", отрабатывает корректно, но оооооочень долго, т.к. не подцепляет индекс. Говорит, что подцепка индекса IDX_PARAM возможна, но на самом деле не подцепляет. Почему так? Помогите пожалуйста
mysql> explain select c.id from TABLE c LEFT JOIN TABLE2 s on c.field=s.field where s.field2=1;
+----+-------------+-------+------+--------------------------+----------------+---------+------------------------+----------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+--------------------------+----------------+---------+------------------------+----------+--------------------------+
| 1 | SIMPLE | c | ALL | IDX_PARAM | NULL | NULL | NULL | 25770871 | |
| 1 | SIMPLE | s | ref | IDX_STATE | IDX_STATE | 10 | base.c.field,const | 5 | Using where; Using index |
+----+-------------+-------+------+--------------------------+----------------+---------+------------------------+----------+--------------------------+
2 rows in set (0.00 sec)
mysql> show index from TABLE;
+---------------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
| TABLE | 0 | PRIMARY | 1 | id | A | 3 | NULL | NULL | | BTREE | |
| TABLE | 1 | IDX_PARAM | 1 | field | A | 3 | NULL | NULL | | BTREE | |
+---------------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+
2 rows in set (0.00 sec)