Mysql LEFT JOIN很慢

时间:2013-07-16 18:35:37

标签: mysql left-join mysql-slow-query-log

我有以下代码,它返回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个条目 Patient_insurance表中的2,296个条目

它是一个至强2处理器的Linux服务器,拥有16GB内存..本地托管

1 个答案:

答案 0 :(得分:3)

使用带有通配符的LIKE的任何查询都必须比使用全文搜索解决方案慢<数百或数千倍。您可以在字符串列上定义传统的B树索引,以便更快地进行通配符搜索。

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

简短的回答是:使用Sphinx Search