首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使查询速度更快?

如何使查询速度更快?
EN

Stack Overflow用户
提问于 2014-09-23 23:34:03
回答 1查看 34关注 0票数 0

我有一个复杂的查询,它根据搜索关键字从数据库中获取数据。我已经写了两个查询,通过连接两个表来获取基于关键字的数据。每个表包含超过500万条记录。但问题是,这个查询需要5-7秒来运行,所以页面需要更多的时间才能到达laod。这些查询包括:

代码语言:javascript
复制
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%' ) 
EN

回答 1

Stack Overflow用户

发布于 2014-09-23 23:39:23

distinct前后的括号没有区别。distinct不是一个函数。因此,您的查询等同于:

代码语言:javascript
复制
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子句来执行所需的操作。这种索引的文档是here。如果您要在各种名称中查找完整的单词,这将特别有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25999132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档