mysql在大表中搜索大约5百万条记录

时间:2014-03-28 10:50:57

标签: mysql search create-table

我需要提高表中搜索的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) ;

1 个答案:

答案 0 :(得分:0)

如果您想选择marketing_emails_data表格的不同城市,可以在该字段上创建INDEX

ALTER TABLE marketing_emails_data ADD INDEX (city);

然后你的查询要快得多。您不需要在查询中声明索引。 mysql足够聪明,可以找出在查询中使用的索引。

正如tntu的评论中所建议的那样,当然更好的方法是创建一个城市表并仅在marketing_emails_data表中存储对城市条目的引用。这将节省大量空间。这是数据库规范化的一部分。