我需要一个简单的查询mysql查询优化。
SELECT * FROM consumer WHERE FIRSTNAME = 'JAMES' and LASTNAME='ADAMS' and City = '*' and State = '*';该表有50,000,000条记录。执行时间为8分钟。你能帮我缩短时间吗?
发布于 2020-05-25 10:17:20
对于此查询:
SELECT *
FROM consumer
WHERE FIRSTNAME = 'JAMES' and LASTNAME = 'ADAMS' and City = '*' and State = '*';你想要一个索引。我推荐consumer(LASTNAME, FIRSTNAME, City, State)。
也就是说,您的查询不应该在50,000行上花费8分钟。我只能想到两个合理的解释:
也有可能数据库服务器上的其他进程正在使用大量资源。或者你有古老的,慢得可怜的第三级存储,或者类似的东西。
发布于 2020-05-25 10:26:36
两件事: 1)添加索引:
ALTER TABLE consumer ADD INDEX (LASTNAME, FIRSTNAME);2)指定city & state = '*‘会将什么值添加到查询中?这是你的数据库中的一些特殊的值,还是你正在寻找任何城市/州?如果是前者,则将这些字段添加到索引中。如果是后者,则将其从where子句中删除。
https://stackoverflow.com/questions/61994801
复制相似问题