MySQL在查询不存在的行时非常慢
我有一个超过100m行的用户表,没有分区:MySQL在查询不存在的行时非常慢,mysql,database-administration,Mysql,Database Administration,我有一个超过100m行的用户表,没有分区: create table User { user_id int primary key auto_increment, user_email varchar(50) unique, ...//no more than 20 columns } ENGINE=MyISAM 大多数情况下,使用以下sql是可以的: select user_id, .... from User where
create table User {
user_id int primary key auto_increment,
user_email varchar(50) unique,
...//no more than 20 columns
} ENGINE=MyISAM
大多数情况下,使用以下sql是可以的:
select user_id, .... from User where user_email=?
但如果我提供了一个数据库中不存在的电子邮件地址,那么它可能会非常慢,可能会超过1s
可能是什么问题
=======更新==========
数据库有一个从数据库,我刚刚测试了SQL非常快,即使没有这样的记录
是否因为数据库运行了很长时间或大约3年?是否创建indexuser_email varchar50 unique,这已经是一个索引您使用MyISAM时可能会在查询时出现一些锁?@disordedev Try ANALYZE TABLE User;,看看这是否有帮助。@fancyPants分析100m记录需要多长时间,数据大小约为20G