【发布时间】:2020-09-09 14:57:35
【问题描述】:
我必须用 MySQL 运行这个查询:
select requests.id, requests.id_temp, categories.id
from opadithree.requests inner join
opadi.request_detail_2
on substring(requests.id_sub_temp, 3) = request_detail_2.id inner join
opadithree.categories
on request_detail_2.theme = categories.cu_code
where categories.atc = false and id_sub_temp like "2_%";
但是由于某种原因查询太慢了。表 requests 有 15583 行。 request_detail_2 表有 66469 行,categories 表有 13452 行。
最有问题的列id_sub_temp 具有以下格式的数据字符串:“2_number”或“3_number”。
你知道加快查询速度的技巧吗?
【问题讨论】:
-
嗯,加入子字符串肯定会减慢您的查询速度。使用有问题的行创建索引可能会对您有所帮助。
-
修复糟糕的表格设计,问题就消失了。 (当您不需要该子字符串时。)
-
很遗憾,我没有权限更改桌子的设计。
-
虽然我同意桌子设计很差,但我认为修复它并不重要。尽管设计如此,Bill 的索引似乎是最优的。
标签: mysql sql query-optimization