0

我有一个客户表,其中包含 customer_id、customer_name、email、password、status 等字段。

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

我有几个选择客户的查询如下

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

这运行缓慢,因为我有 130 万条记录所以我正在考虑在电子邮件字段上添加索引。我想知道哪个索引会使简单索引更好,或者我必须使用 FULLTEXT 索引

4

1 回答 1

1

索引有助于在FULLTEXT列中搜索单词。

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

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

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

[编辑]

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

假设上述情况(您的大多数客户确实有电子邮件和密码设置),那么您的查询返回许多记录,任何索引都将无济于事(如 nos 和 raina77ow 所建议的那样)。

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

于 2013-03-04T13:37:08.917 回答