我有一个包含500万行+的表,我有一个varchar(50)
字段来保存IP。
当我运行此查询时,需要大量资源和时间:
SELECT * FROM table WHERE ip = 'xx.xxx.xx.xxx' LIMIT 1
我可以做些什么来改善这个过程?
答案 0 :(得分:2)
您需要ip
列上的索引:
create index idx_table_ip on table(ip)
然后您的查询应该快速运行,假设您没有太多重复项。
让我澄清最后的陈述。重复项不会影响此特定查询的运行时。但是,使用limit
时,您应该有一个order by
,以便结果稳定(使用两次查询将返回相同的行)。在这种情况下,您应该在索引中包含order by
列(如果可能)。如果不匹配,匹配数将影响性能。