在巨大的表中搜索varchar

时间:2014-09-27 18:02:41

标签: mysql sql select ip varchar

我有一个包含500万行+的表,我有一个varchar(50)字段来保存IP。

当我运行此查询时,需要大量资源和时间:

SELECT * FROM table WHERE ip = 'xx.xxx.xx.xxx' LIMIT 1

我可以做些什么来改善这个过程?

1 个答案:

答案 0 :(得分:2)

您需要ip列上的索引:

create index idx_table_ip on table(ip)

然后您的查询应该快速运行,假设您没有太多重复项。

让我澄清最后的陈述。重复项不会影响此特定查询的运行时。但是,使用limit时,您应该有一个order by,以便结果稳定(使用两次查询将返回相同的行)。在这种情况下,您应该在索引中包含order by列(如果可能)。如果不匹配,匹配数将影响性能。