varchar 列上的索引是否会使查询运行速度变慢?我可以把它变成int。而且我不需要进行 LIKE % 比较。
问问题
61937 次
4 回答
85
varchar 列上的索引是否会使查询运行速度变慢?
不,不是的。
如果优化器决定使用索引,查询将运行得更快。 INSERT
该表上的 s/ UPDATE
s/ DELETE
s 会较慢,但不太可能引起注意。
我不需要进行 LIKE % 比较
请注意,使用:
LIKE '%whatever%'
...不会使用索引,但以下将:
LIKE 'whatever%'
关键是字符串左侧的通配符意味着不能使用列上的索引。
还知道MySQL 限制为索引留出的空间量- 对于 MyISAM(对于 InnoDB)表,它们最长可达 1000 字节(对于 InnoDB 为 767 字节)。
于 2009-12-14T01:39:17.183 回答
11
如果您可以用整数替换您的 varchar 列(我认为这是您的暗示),那么由于某些原因,包含整数列的索引将比 varchar 列执行得更好。
- 索引大小将更小并且涉及更少的分页。
- 整数的比较远比varchar好。
于 2009-12-14T01:43:41.177 回答
7
索引不会使查询变慢,数据库大小只会变大,所以继续尝试一下。
您应该能够在获取行时获得更好的性能,但这取决于您的数据和查询。
于 2009-12-14T01:09:32.820 回答
2
您不会通过索引使查询变得更慢。如果您可以将列设为 int 类型,我建议您这样做,因为大多数 RDBMS 可以比 varchars 更快地搜索 int
于 2009-12-14T01:13:09.927 回答