我在为MariaDB中的300万行表建立唯一索引时遇到问题。它有超过一百万个我想查找的utf-8字符串键。字符串必须为utf-8,因为它们包含英语,德语,日语,西班牙语和西里尔字母。使用导致线性搜索的索引可能会太慢。
问题是一列中utf-8 varchars的最大总长度为21844个字符。单个字符的允许数量比使用的键的数量少几个数量级,并且这些键都是多字符。 (请注意,在这种情况下,要建立索引的表的大小是固定的。)
我在网上没有找到解决此问题的示例。所有示例都使用多列唯一键,其中假定没有单独的列会超出总varchar大小限制。
有什么方法可以对此数据库使用MariaDB / MySQL吗?鉴于这些SQL数据库可以管理数亿行,因此应该有一种方法可以有效地索引只有300万行的相对较小的表。
答案 0 :(得分:0)
您可以使用generated column创建文本列的哈希,并在此哈希上创建create a unique index。在文本上添加部分非唯一索引将有助于搜索。
从理论上讲可能会发生哈希冲突,但似乎不可能达到300万。