我有一个非常大的MySQL表格,其中包含约150,000行数据。目前,当我尝试运行
SELECT * FROM table WHERE id = '1';
代码因为ID字段是主索引而运行良好。 但是,由于项目的最新发展,我必须通过另一个字段搜索数据库。例如:
SELECT * FROM table WHERE product_id = '1';
该字段之前没有被索引,但现在我已经添加了一个索引,但是当我尝试运行上述查询时,它运行得非常缓慢。使用EXPLAIN查询发现,尽管我已经添加了索引,但product_id字段没有索引,结果查询需要20到30分钟才能返回一行数据。
完整的EXPLAIN结果如下:
| id | select_type | table | type | possible_keys| key | key_len | ref | rows | Extra |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
| 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL |157211 | Using where |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
值得注意的是,我刚刚查看了一下,ID字段存储为INT类型,而PRODUCT_ID字段存储为VARCHAR类型。这可能是问题的源头吗?
EXPLAIN
结果吗?你确定没有索引吗?还是索引存在,但 MySQL 选择不使用它? - VoteyDisciple