首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql中选择count query花费2分钟获取count result

在mysql中选择count query花费2分钟获取count result
EN

Stack Overflow用户
提问于 2019-09-21 16:56:13
回答 1查看 108关注 0票数 0

我使用的是mysql数据库,它的表名是license_csv,它有18 million记录,当我尝试在没有where条件的情况下计数记录时,它使用的是MYISAM引擎它的计数时间不到1秒,但是当我应用where条件它将2 min用于计数结果时,我已经对这两列lic_statelic_city应用了indexing,仍然需要2分钟的计数结果,谁能告诉我现在我需要为那个查询做些什么?这里我还添加了我的查询,

代码语言:javascript
复制
SELECT COUNT(*) as total 
from license_csv WHERE 
lic_state like '%ca%' AND lic_city LIKE '%fresno%'
EN

回答 1

Stack Overflow用户

发布于 2019-09-21 17:08:48

查询的问题是在字符串的两端都使用了%通配符。这破坏了现有的索引。因为索引是连续的,所以MySQL不能将它们用于这种类型的条件,因为没有任何东西可以告诉他从哪里开始搜索。

可能的选项:

如果可能,请切换到equality而不是LIKE;然后您可以利用(lic_state, lic_sity)

  • else,上的索引删除左侧的通配符(lic_state like 'ca%')可以帮助

  • 切换到FULL TEXT search

  • 将CA代码和城市的列表存储在另一个表(应该比licences表小得多)中,并在licences表中有一个引用其主键的列;然后在搜索中使用JOIN该表。使用此选项,应用搜索条件时要搜索的记录范围将为mch smaller
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58038746

复制
相关文章

相似问题

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