1

我有下面的代码,它返回 10 个条目。现在好像很慢。

SELECT a.id
       , a.patient_name
       , a.phone
       , p2.card_number 
 FROM patients as a
 LEFT JOIN patient_insurance as p2
 ON a.id=p2.patient 
 WHERE a.patient_name LIKE '%$_GET[term]%' 
       OR a.id LIKE '%$_GET[term]%' 
       OR a.phone LIKE '%$_GET[term]%' 
       OR p2.card_number LIKE '%$_GET[term]%' 
 LIMIT 10

我在患者表中有 12,107 个条目在患者保险表中有 2,296 个条目

它是一个至强 2 处理器的 linux 服务器,具有 16GB 内存。本地托管

4

1 回答 1

3

任何使用LIKE通配符的查询都必然比使用全文搜索解决方案慢数百或数千倍。没有可以在字符串列上定义的常规 B 树索引,这将使通配符搜索更快。

请阅读我的演示全文搜索Throwdown,其中我比较了 MySQL 的几种全文搜索解决方案。

简短的回答是:使用Sphinx Search

于 2013-07-16T23:24:36.940 回答