Varchar上的索引是否会产生性能差异?

时间:2009-12-14 01:07:20

标签: mysql sql performance indexing varchar

varchar列上的索引是否会使查询运行得更慢? 我可以把它变成int。而且我不需要进行LIKE%比较。

5 个答案:

答案 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列表现更好,原因有几个。

  1. 索引大小会更小,涉及的分页更少。
  2. 整数的比较远远好于varchar。

答案 2 :(得分:7)

索引不会使查询变慢,数据库大小会变大,所以请继续尝试。

您应该能够在获取行时获得更好的性能,但这取决于您的数据和查询。

答案 3 :(得分:2)

您不会通过索引来减慢查询速度。如果您可以使列成为int类型,我建议这样做,因为大多数RDBMS可以比varchars更快地搜索int

答案 4 :(得分:0)

插入时存在性能问题。我可以肯定地告诉你,插入一个在varchar列上有索引的大表可能会非常慢。 (最多50倍)