我有一个非常大的MySQL表,大约有150000行数据。当前,当我尝试运行时
从id为'1'的表中选择*;
代码运行良好,因为ID字段是主索引。
然而,对于该项目的最新发展,我必须通过另一个字段搜索数据库。例如:
从product_id='1'的表格中选择*;
此字段以前没有索引;但是,我添加了一个,所以mysql现在对字段进行索引,但是当我尝试运行上面的查询时,它运行得非常慢。EXPLAIN查询显示,当我已经添加了product_id字段时,该字段没有索引,因此查询需要20分钟到30分钟的时间才能返回一行
我的全部解释结果如下:
| id |选择|类型|表格|类型|可能的|键|键|列|参考|行|额外|
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
|1 |简单|表格|所有|空|空|空|空| 157211 |使用where|
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
请注意,我刚刚查看了一下,ID字段存储为INT,而PRODUCT_ID字段存储为VARCHAR,这可能会有所帮助。这可能是问题的根源吗
ALTER TABLE`TABLE`添加索引`product\u id\u INDEX`(`product\u id`)
永远不要将MySQL中的整数与字符串进行比较。如果id为int,请删除引号