gpt4 book ai didi

mysql - MySQL中用命令或函数查询执行情况

转载 作者:行者123 更新时间:2023-11-30 01:11:51 24 4
gpt4 key购买 nike

如果我想在 b.int_name 与 c.d_name 或 c.b_name 或 d.syn 匹配时从表 a 和 b 中提取行,下面的查询是否正确?

SELECT DISTINCT a.n_id,
a.dis,
b.int_name
FROM cdb a,
ct_int b,
d_b c,
d_syn d
WHERE a.dis LIKE '%hunt%'
&& a.n_id=b.n_id
&& b.int_name NOT LIKE 'NA'
&& b.int_type NOT LIKE 'NA'
&& (b.int_name NOT LIKE c.d_name
OR b.int_name NOT LIKE c.b_name
OR b.int_name NOT LIKE d.syn);

此查询执行花费了大量时间。如果我给出限制为 10 或 20 的上述查询,它很快就会出现,但如果没有限制,则会卡住很长时间,并且不知道它是否会给出结果。请这方面的指导。提前致谢...

最佳答案

首先,编写正确的连接,而不使用已弃用的语法,它将使您能够看到自己在做什么。

您当前正在连接 4 个表,且具有一个良好的连接条件。其余的连接将执行非常糟糕,特别是因为您正在执行看起来像“字符串不像字符串”的连接 - 规范化您的数据,并且永远不要在 varchar 上进行 jon ,除非您确实必须这样做。其次,在您的情况下, NOT LIKE 相当于 !=。使用它。

第二,

&& b.int_name NOT LIKE 'NA' 
&& b.int_type NOT LIKE 'NA'

写成这样可能会更快

&& b.int_name != 'NA' 
&& b.int_type != 'NA'

第三:post表结构和预期结果。也许有交叉连接的替代方案。

关于mysql - MySQL中用命令或函数查询执行情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19400026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com