Mysql sql子字符串性能

Mysql sql子字符串性能,mysql,sql,performance,postgresql,string-matching,Mysql,Sql,Performance,Postgresql,String Matching,我有一个包含两列的表: id | word 总行数约为20万行。 我想以最快的方式在第二列中找到子字符串。 我尝试过使用索引btree和hash,但这些方法只有在以下情况下才能提高性能: SELECT * FROM tbl WHERE word like 'string'. 但我要调整这个查询: SELECT * FROM tbl WHERE word like '%sub-string%' 下面是一个问题示例:对于PostgreSQL,像“%sub string%”这样的条件可以通过使用

我有一个包含两列的表:

id | word
总行数约为20万行。 我想以最快的方式在第二列中找到子字符串。 我尝试过使用索引btree和hash,但这些方法只有在以下情况下才能提高性能:

SELECT * FROM tbl WHERE word like 'string'.
但我要调整这个查询:

SELECT * FROM tbl WHERE word like '%sub-string%'

下面是一个问题示例:

对于PostgreSQL,像“%sub string%”这样的条件
可以通过使用三元索引进行调整

有关详细信息,请参阅此博客帖子:



使用两个引擎的全文搜索功能也是一种选择。

对于PostgreSQL,可以通过使用三元索引来调整条件
如“%sub string%”

有关详细信息,请参阅此博客帖子:



使用两个引擎的全文搜索功能也是一种选择。

这是什么RDBMS?您可能需要全文搜索。我已经尝试过全文搜索,但我认为只有在您想要查找单词时才有用,而我想要查找部分单词(子字符串)。我已经尝试过两种RDBMS:PostgreSql和MySQL,然后您可能会被迫采用暴力方法。对于每个单词,从第二、第三、第四等字母开始创建其他行<代码>字符串
可以存储为
字符串
字符串
ing
ng
g
。然后,
像“ri%”
会很快找到
铃声。这些条目随后将映射回它们的父单词,但尽可能多的单词共享相同的结尾(
string
ring
bring
,等等),这将是多对多的。这是什么RDBMS?您可能需要全文搜索。我已经尝试过全文搜索,但我认为只有在您想要查找单词时才有用,而我想要查找部分单词(子字符串)。我已经尝试过两种RDBMS:PostgreSql和MySQL,然后您可能会被迫采用暴力方法。对于每个单词,从第二、第三、第四等字母开始创建其他行<代码>字符串
可以存储为
字符串
字符串
ing
ng
g
。然后,
像“ri%”
会很快找到
铃声。这些条目随后会映射回它们的父单词,但许多单词都有相同的结尾(
string
ring
bring
,等等),这将是多对多的。如果没有上面DEM提到的“暴力”方法,a_h_w_n_n_n_n是正确的。这是一个特定于PostgreSQL的选项,但据我所知,这是为此类搜索编制索引的唯一方法。如果没有上面DEM提到的“蛮力”方法,a_h_w_n_n_n_n_n_n_n_n_n_n_n_h_n_n_n会正确。这是一个特定于PostgreSQL的选项,但据我所知,这是为此类搜索编制索引的唯一方法。