php - Mysql 对 Anagram 求解器的多个查询

标签 php mysql anagram

我有一个名为“字典”的简单但巨大的表,它有 2 列。身份证和单词。 我有一个 php 字谜算法,可以创建给定单词的所有可能组合。我想检查这个词是否存在于我的字典中,如果存在则显示它。但我必须使用太多查询。例如,一个 9 个字母的单词是 362880 种组合。知道如何减少数据库调用吗?

最佳答案

尝试这样的事情:

SELECT word
FROM dictionary
WHERE word LIKE '%a%a%a%'
AND word LIKE '%n%'
AND word LIKE '%g%'
AND word LIKE '%r%'
AND word LIKE '%m%'
AND CHAR_LENGTH(word) = 7

更好的是,将字母的排序排列与单词一起存储,并在查询时对字母进行排序。

SELECT word
FROM dictionary
WHERE sorted_word = 'aaagmnr'

sorted_word 上添加索引以获得最佳性能。

关于php - Mysql 对 Anagram 求解器的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506668/

相关文章:

MYSQL设置临时列用于连接表

ruby - 如何在 Ruby 中将单词数组排序为字谜数组?

java - 为什么我得到 "Duplicate modifier for the type Test"以及如何修复它

php - 如何卸载 Phalcon?

php - 插入查询在 codeigniter 中不起作用

php - 如何获取学说中下一个table_id_seq(primary_key)的值?

algorithm - 读取 N 个单词并打印所有字谜的算法

php - session 未显示,但肯定存在,如下一页所示

mysql - 按列名将单个记录分成两行

php - php中同时post和get