我应该在二进制数据类型列mysql上使用哪个索引

Yog*_*R.L 4 mysql indexing collation b-tree-index

我正在编写一个简单的工具来检查重复的文件(即具有相同数据的文件).机制是使用sha-512算法为每个文件生成哈希值,然后将这些哈希值存储在MYSQL数据库中.我在二进制(64)唯一非空列中存储哈希值.每行都有一个唯一的二进制哈希值,用于检查文件是否重复.

- 我的问题是 -

  1. 我可以在二进制列上使用索引,我的默认表排序规则是latin1 - 默认排序规则吗?

  2. 为了获得高性能,我应该使用哪种索引机制Btree或Hash?我需要每秒更新或添加100行.

  3. 我还应该注意哪些其他方面才能获得最佳性能?

egg*_*yal 11

  1. 我可以在二进制列上使用索引,我的默认表排序规则是latin1 - 默认排序规则吗?

    是的你可以; 排序规则仅与字符数据类型相关,而不是二进制数据类型(它定义了字符的排序方式) - 另外,请注意这latin1字符编码,而不是排序规则.

  2. 为了获得高性能,我应该使用哪种索引机制Btree或Hash?我需要每秒更新或添加100行.

    请注意,哈希索引仅适用于MEMORYNDB存储引擎,因此您甚至可能没有选择.

    无论如何,要么通常能够满足你的性能标准 - 尽管对于这个特定的应用程序我看不到使用B-Tree(有序)的好处,而Hash会提供更好的性能.因此,如果您有选择,您也可以使用哈希.

    有关更多信息,请参阅B树和哈希索引的比较.

  3. 我还应该注意哪些其他方面才能获得最佳性能?

    取决于您对"最佳表现"和您的环境的定义.一般来说,请记住Knuth的格言" 过早优化是所有邪恶的根源 ":也就是说,只有在您知道最简单的方法存在问题时才进行优化.