哪种索引更适合简单检查

时间:2013-03-04 13:11:15

标签: mysql performance

我有一个包含customer_id,customer_name,电子邮件,密码,状态等字段的客户表。

目前只有customer_id被编入索引(因为它是主键)

我几乎没有选择客户的查询

select * from customer 
where status=1 and email<>'' 
and email is not null 
and password<>'' 
and password is not null

由于我有130万条记录,因此运行缓慢 所以我想在电子邮件领域添加索引。 我想知道哪个索引会使简单的索引工作更好,或者我必须使用FULLTEXT索引

1 个答案:

答案 0 :(得分:1)

FULLTEXT索引有助于搜索列中的文字。

如果你真的只是搜索(和非空)电子邮件和密码,那么一个简单的索引就足够了。

对于这个查询,更相关的索引是:

ALTER TABLE customer ADD INDEX (status, email, password);

[编辑]

正如Dukeling 等人正确指出的那样,如果你的大多数customers确实有电子邮件或密码设置,这样的索引可能毫无用处。

假设上面(大多数客户确实有电子邮件和密码设置),那么您的查询会返回许多记录,并且任何索引都没什么帮助(正如nos和raina77ow所建议的那样)。

唯一可以肯定的是,FULLTEXT索引在这种情况下是无用的。