将列长度从varchar 18更改为varchar 8会大大提高搜索速度吗?

时间:2014-09-08 19:09:25

标签: mysql sql performance

我有一个大约500k行的Mysql数据库。我有一个列基本上是一个用作每行索引的短网址。我可以使索引8 char / varchar或18.我想知道额外的10个字符是否会真正减慢我的搜索速度。一个pro to varchar 18是我不必生成一个简短的网址。然而,如果我做varchar或char 8,我会的。索引将用于检索注释,更新条目等。但无论如何,索引都是唯一的。

由于

2 个答案:

答案 0 :(得分:0)

8-char和18-char列值之间的索引性能差异不为零。但它很小。当您处理255个字符索引之类的内容时,索引性能会恶化得更厉害。

除非你有非常特殊的性能要求,否则无论哪种方式都可以使用半megarow表。

当您完成表格的初始加载后,请执行OPTIMIZE TABLE以使索引以最佳方式运行。如果该表获得了大量DELETEINSERT次操作,请尝试查找您经常重做OPTIMIZE TABLE操作时的一天或一周的时间。 http://dev.mysql.com/doc/refman/5.6/en/optimize-table.html

答案 1 :(得分:0)

不是很大。 B + -tree索引中的搜索速度随索引读取的数量而变化,这取决于 log x (N),其中 N 是数字索引条目和 x 是每个索引块的密钥数,而这些密钥又与它们的长度成反比。你可以看到它是一种亚线性关系。