Mysql 如何从50000000减少查询时间
我需要一个简单的查询mysql查询优化 从消费者中选择*,其中FIRSTNAME='JAMES'和LASTNAME='ADAMS',City='*'和State='*'; 该表有5000万条记录。 执行时间为8分钟。 您能帮我缩短时间吗?对于此查询:Mysql 如何从50000000减少查询时间,mysql,sql,Mysql,Sql,我需要一个简单的查询mysql查询优化 从消费者中选择*,其中FIRSTNAME='JAMES'和LASTNAME='ADAMS',City='*'和State='*'; 该表有5000万条记录。 执行时间为8分钟。 您能帮我缩短时间吗?对于此查询: SELECT * FROM consumer WHERE FIRSTNAME = 'JAMES' and LASTNAME = 'ADAMS' and City = '*' and State = '*'; 你需要一个索引。我会推荐consume
SELECT *
FROM consumer
WHERE FIRSTNAME = 'JAMES' and LASTNAME = 'ADAMS' and City = '*' and State = '*';
你需要一个索引。我会推荐consumerLASTNAME、FIRSTNAME、City、State
也就是说,您的查询不应该在50000行上花费8分钟。我只能想到两个合理的解释:
有东西把桌子锁上了。
您的行非常非常宽,因此返回了大量数据。
数据库服务器上的其他进程也可能正在使用大量资源。或者您有陈旧的、速度慢得可怜的第三级存储,或者类似的东西。两件事:
1添加索引:
ALTER TABLE consumer ADD INDEX (LASTNAME, FIRSTNAME);
2指定city&state='*'添加到查询中的值是什么?这是你数据库中的一些特殊值,还是你在寻找任何城市/州?如果是前者,则将这些字段添加到索引中。如果是后者,则从where子句中删除它。也可以在索引中包括城市和州字段。给出的示例是查找文本“*”而不是通配符或类似的字符clause@PaulProgrammer . . . 我回答后,OP改变了问题。