如何将部分字符串与 mysql 中的大型数据库进行比较


How to compare part of string against large database in mysql

  1. 我有一个 mysql 表,其中包含一列域名(大约 100k 行)

例:

ID    Domain_Name
 1    AnotherOlataxi.xom
 2    goodlolita.com
  1. 我还有一些表格,其中包含来自许多不同语言的单词,如英语单词、法语单词等。

例:

ID    Language   Word 
1     en         good
2     en         taxi
3     fr         ola

我想将每个域与语言表进行比较,并找到单词和语言。

例:我应该得到一个单词和语言的列表。如果我运行域 anotherolataxi.com,它应该返回类似

Array(
 'another'=>'en',
 'ola'   => 'fr',
 'taxi' =>'en'
)

如何获得此结果以及如何在不影响性能的情况下比较这些大型表?

您可以使用

like . 它不会有效率,但它确实可以做你想要的:

select d.*, w.*
from domains d join
     words w
     on d.domain_name like concat('%', w.word, '%');

对于单个域,性能应该不会太差。 您可以添加where子句:

where d.id = 1

例如。