我使用的是mysql数据库,它的表名是license_csv,它有18 million记录,当我尝试在没有where条件的情况下计数记录时,它使用的是MYISAM引擎它的计数时间不到1秒,但是当我应用where条件它将2 min用于计数结果时,我已经对这两列lic_state和lic_city应用了indexing,仍然需要2分钟的计数结果,谁能告诉我现在我需要为那个查询做些什么?这里我还添加了我的查询,
SELECT COUNT(*) as total
from license_csv WHERE
lic_state like '%ca%' AND lic_city LIKE '%fresno%'发布于 2019-09-21 17:08:48
查询的问题是在字符串的两端都使用了%通配符。这破坏了现有的索引。因为索引是连续的,所以MySQL不能将它们用于这种类型的条件,因为没有任何东西可以告诉他从哪里开始搜索。
可能的选项:
如果可能,请切换到equality而不是LIKE;然后您可以利用(lic_state, lic_sity)
lic_state like 'ca%')可以帮助
FULL TEXT search
JOIN该表。使用此选项,应用搜索条件时要搜索的记录范围将为mch smallerhttps://stackoverflow.com/questions/58038746
复制相似问题