sqls数据库where in的查询优化

问题描述 投票:0回答:1

这是我当前的查询语句。(这是我现在的查询语句以及执行效率) SELECT

channel
FROM
p_evaluate
WHERE 频道 ('xiaomin','xiao Huang','shlt','dhcpc','leizi','tianyue','hcyx','xxkp','tiantian','fuwuzhida ') 在此输入图片描述 数据库结构如图所示。(数据库结构说明) 在此输入图片描述 在此输入图片描述

如上所述,我尝试添加索引等方法,但似乎无法使用索引。(如上我尝试了添加索引等方法但显然用不到索引) 我预计会显着减慢他的询问速度。我预计会显着减慢他的询问速度。 (我希望能够显着降低他的查询速度)

mysql
1个回答
0
投票

WHERE
子句中硬编码维护 10 个左右的不同值非常麻烦,而且正如您所看到的,性能不太好。 更好的方法是将这些通道值移动到真正的表中(例如
channel_values
),为其通道列建立索引,然后重写查询以使用联接:

table channel_values:
channel
xiaomin
xiaohuang
...
fuwuzhida

CREATE INDEX idx ON channel_values (channel);

SELECT p.channel
FROM p_evaluate p
INNER JOIN channel_values v
    ON v.channel = p.channel
© www.soinside.com 2019 - 2024. All rights reserved.