【发布时间】:2019-02-21 03:54:01
【问题描述】:
我在为 MariaDB 中的 300 万行表构建唯一索引时遇到问题。它有超过 50 万个我想要查找的 utf-8 字符串键。字符串必须是 utf-8,因为它们包含英语、德语、日语、西班牙语和西里尔字符。使用导致线性搜索的索引可能会太慢。
问题在于,一列中 utf-8 varchars 的最大总长度为 21,844 个字符。允许的单个字符数比使用的键数少几个数量级,并且键都是多字符。 (注意,在这种情况下,要索引的表是固定大小的。)
我没有在网上找到解决这种情况的示例。所有示例都使用多列唯一键,假设没有单个列会超出总 varchar 大小限制。
有没有办法使用 MariaDB/MySQL 来处理这个数据集?鉴于这些 SQL 数据库可以管理数亿行,应该有一种方法可以有效地索引只有 300 万行的相对较小的表。
【问题讨论】:
-
不要在很长的字符串上添加索引,为什么不索引它的哈希值。这样可以减少索引长度。或者使用全文索引
-
您是说该列是
TEXT CHARACTER SET utf8并且您想在其上拥有一个UNIQUE索引?
标签: mysql indexing mariadb innodb varchar