我需要提高表中搜索的SELECT查询性能。我有一张约500万行的表格。当我想在这个表中搜索时,需要花费很多时间,这是不可接受的。我曾尝试使用索引,但索引也无法提供帮助。请建议我搜索这个表格的任何有效方法。这花了我两天的努力,但没有运气。任何帮助将非常感谢...
编辑:
这是我到目前为止的CREATE TABLE语句:
CREATE TABLE marketing_emails_data (
id int(11) NOT NULL,
name varchar(11) NOT NULL,
city varchar(105) DEFAULT NULL,
state varchar(40) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这是我的疑问:
SELECT DISTINCT marketing_emails_data.city
FROM marketing_emails_data
USE INDEX (state_index) ;
答案 0 :(得分:0)
如果您想选择marketing_emails_data
表格的不同城市,可以在该字段上创建INDEX
:
ALTER TABLE marketing_emails_data ADD INDEX (city);
然后你的查询要快得多。您不需要在查询中声明索引。 mysql足够聪明,可以找出在查询中使用的索引。
正如tntu的评论中所建议的那样,当然更好的方法是创建一个城市表并仅在marketing_emails_data
表中存储对城市条目的引用。这将节省大量空间。这是数据库规范化的一部分。