varchar列上的索引是否会使查询运行得更慢? 我可以把它变成int。而且我不需要进行LIKE%比较。
答案 0 :(得分:82)
varchar列上的索引是否会使查询运行得更慢?
不,它没有。
如果优化器决定使用索引,则查询将运行得更快。该表上的INSERT
s / UPDATE
s / DELETE
将会变慢,但不太可能发现。
我不需要进行LIKE%比较
请注意使用:
LIKE '%whatever%'
...将不使用索引,但以下内容将为:
LIKE 'whatever%'
键是通配符串的左侧意味着不能使用列上的索引。
同样知道MySQL limits the amount of space set aside for indexes - 对于MyISAM(InnoDB为767字节)表,它们最长可达1000字节。
答案 1 :(得分:11)
如果你可以用一个整数替换你的varchar列(我认为这是你的暗示)那么包含整数列的索引将比varchar列表现更好,原因有几个。
答案 2 :(得分:7)
索引不会使查询变慢,数据库大小会变大,所以请继续尝试。
您应该能够在获取行时获得更好的性能,但这取决于您的数据和查询。
答案 3 :(得分:2)
您不会通过索引来减慢查询速度。如果您可以使列成为int类型,我建议这样做,因为大多数RDBMS可以比varchars更快地搜索int
答案 4 :(得分:0)
插入时存在性能问题。我可以肯定地告诉你,插入一个在varchar列上有索引的大表可能会非常慢。 (最多50倍)