繁体   English   中英

我怎样才能使查询更快

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM