[英]how can i make query more faster
我有一个复杂的查询,它根据搜索关键字从数据库中获取数据。 我编写了两个查询,通过连接两个表来基于关键字获取数据。 每个表包含超过500万条记录。 但是问题是,此查询需要5到7秒钟才能运行,因此该页面需要花费更多时间来整理。 查询是:
SELECT DISTINCT( `general_info`.`company_name` ),
general_info.*
FROM general_info
INNER JOIN `financial_info`
ON `financial_info`.`reg_code` = `general_info`.`reg_code`
WHERE ( `financial_info`.`type_of_activity` LIKE '%siveco%'
OR `general_info`.`company_name` LIKE '%siveco%'
OR `general_info`.`reg_code` LIKE '%siveco%' )
周围的括号没有区别。 distinct
不是功能。 因此,您的查询等同于:
SELECT gi.*
FROM general_info gi INNER JOIN
`financial_info` gi
ON fi.`reg_code` = gi.`reg_code`
WHERE fi.`type_of_activity` LIKE '%siveco%' OR
gi.`company_name` LIKE '%siveco%' OR
gi.`reg_code` LIKE '%siveco%';
对于join
,你应该有指标general_info(reg_code)
和financial_info(reg_code)
您可能已经有了这些索引。
真正的问题可能是where
子句。 因为您在模式的开头使用通配符,所以无法使用常规索引对其进行优化。 您可以使用全文搜索以及matches
子句来执行所需的操作。 这样的索引的文档在这里 。 如果您要查找各种名称中的完整单词,这将特别有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.