Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从50000000减少查询时间_Mysql_Sql - Fatal编程技术网

Mysql 如何从50000000减少查询时间

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

我需要一个简单的查询mysql查询优化

从消费者中选择*,其中FIRSTNAME='JAMES'和LASTNAME='ADAMS',City='*'和State='*'; 该表有5000万条记录。 执行时间为8分钟。 您能帮我缩短时间吗?

对于此查询:

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改变了问题。