Mysql 将列长度从varchar 18更改为varchar 8是否会显著提高搜索速度?

Mysql 将列长度从varchar 18更改为varchar 8是否会显著提高搜索速度?,mysql,sql,performance,Mysql,Sql,Performance,我有一个大约500k行的Mysql数据库。我有一个列,它基本上是一个短url,用作每行的索引。我可以将索引设为8 char/varchar或18。我想知道额外的10个字符是否真的会大大降低我的搜索速度。VARCHAR18的一个优点是我不需要生成一个短url。然而,如果我做varchar或char 8,我会。该索引将用于检索注释、更新条目等。但是,不管怎样,该索引都是唯一的 感谢8字符和18字符列值之间的索引性能差异不是零。但是它很小。当您处理诸如255个字符索引之类的内容时,索引性能恶化更为明显

我有一个大约500k行的Mysql数据库。我有一个列,它基本上是一个短url,用作每行的索引。我可以将索引设为8 char/varchar或18。我想知道额外的10个字符是否真的会大大降低我的搜索速度。VARCHAR18的一个优点是我不需要生成一个短url。然而,如果我做varchar或char 8,我会。该索引将用于检索注释、更新条目等。但是,不管怎样,该索引都是唯一的


感谢8字符和18字符列值之间的索引性能差异不是零。但是它很小。当您处理诸如255个字符索引之类的内容时,索引性能恶化更为明显

除非您有非常出色的性能要求,否则无论哪种方式,您都可以使用半兆行表


完成表的初始加载后,请执行
optimizetable
,使索引以最佳方式工作。如果表格有大量的
DELETE
INSERT
操作,请尝试在每天或每周的某个时间重新执行
优化表格
操作

不是很严重。B+树索引中的搜索速度随索引读取次数的变化而变化,这随logx(N)的变化而变化,其中N是索引项的数量,x是每个索引块的键数,而键数又与索引块的长度成反比。您可以看到它是一种次线性关系。

如果字段已被索引,则DB将比较索引哈希,而不是字符串。e、 g.如果使用索引,字符串的长度无关紧要。长度真正重要的唯一时间是确认散列实际上表示要比较的字符串,例如,检查没有发生散列冲突,而且只能在表的一小部分上完成。您是否尝试过使用样本数据运行基准测试以找出答案?@BrianDriscoll您知道有什么好的基准测试工具吗?@MarcB我不知道。我这样问是因为我到处都读到,为了提高性能,缩短索引的长度。我能读到关于这个的任何资料吗?@MarcB,只有带有
内存
访问方法的MySQL表支持哈希索引。标准MySQL中的其余访问方法支持BTREE索引。