mysql部分索引、反向索引

标签 mysql database indexing

我有一个包含单词列表的表格。

单词 VARCHAR(16)

我需要创建一个反向索引。 IE。单词“apple”会索引为“elppa”,单词“banana”会索引为“ananab”等等。

还有,是否可以索引,比如说,单词的一部分?例如,跳过前/后 1 或 2 个字符:

苹果(苹果) anana(香蕉)

这些事情可能吗?

最佳答案

您可以在受前缀长度限制的字段上创建索引,这意味着将只考虑前 n 个字符,但您不能使用任意的开始和结束位置。在 mysql 的 CREATE INDEX 上阅读更多相关信息文档页面。

在这种情况下,我只是创建另一个专栏,使用 mysql 的 REVERSE函数来填充它并在其上创建一个索引,这样你就可以得到一个字段来搜索原始单词的反义词。

Postgresql 等其他数据库允许您 index an expression ,这将有效地允许您索引 reverse(col_name) 而无需创建额外的列。所以这是可能的,只是现在不使用 mysql。 (因为我相信版本 9 potgresql 有 reverse() native)

关于mysql部分索引、反向索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10957053/

相关文章:

mysql - SQL如何使用日期字段按财政季度和年度分组

php - Web开发中缓存的优点和缺点是什么 在PHP中,它如何影响数据库?

objective-c - 核心数据过度使用?

java - Lucene索引和Map/Reduce搜索

mysql - phpMyAdmin 抛出 #2002 无法登录 mysql 服务器 phpmyadmin

sql - 并行执行在 Oracle 中不起作用

mysql - 无法在 MySQL 5.5.25 中设置 max_allowed_pa​​cket

sql - 具有唯一聚集索引的表和索引 View 以相同的方式存储。那么索引 View 有什么好处呢?

r - 使用空索引索引列表

mysql - 由于 MySql 错误而拒绝访问