我有以下代码,它返回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内存..本地托管
答案 0 :(得分:3)
使用带有通配符的LIKE
的任何查询都必须比使用全文搜索解决方案慢<数百或数千倍。您可以在字符串列上定义传统的B树索引,以便更快地进行通配符搜索。
请阅读我的演示文稿Full Text Search Throwdown,其中我比较了MySQL的几种全文搜索解决方案。
简短的回答是:使用Sphinx Search。