【发布时间】:2020-02-14 02:08:23
【问题描述】:
请帮我优化下面的Mysql查询
SELECT * FROM `ticket` WHERE `ticket_id` LIKE '%wm%33%' LIMIT 0,1000
该表没有全文索引,我担心当需要始终打开该表时,为该列提供全文索引将花费时间
【问题讨论】:
-
您使用的是哪个版本的 MySQL?
-
我觉得这个问题没有提供足够的信息。例如,
ticket_id数据是什么样的?你总是以同样的方式搜索吗?是否可以将 ID 分解为单独的列并编制索引以帮助搜索? -
如果没有全文索引,您将无法优化以
%开头的 LIKE 模式。普通索引是 B 树,它们从字符串的开头开始工作。如果模式没有固定的开头,则无法使用索引,您必须进行完整扫描。 -
但是如果您要匹配的票证部分位于字符串中的固定位置,您可以使用
SUBSTR()为它们创建虚拟列,并将其编入索引。 -
@hamzbond - 发布一些具有代表性的示例数据,并解释您使用
wm和33搜索的方式/原因。如果我们不完全了解问题的背景,我们就无法提供适当的解决方案。
标签: mysql sql optimization indexing