[英]When I run my query in Snowflake it keeps running but without the OR statement is runs in merely seconds
I have a query where I select 3 columns from two tables.我有一个查询,其中我 select 来自两个表的 3 列。 First I check if a clientnumber is in the list, for which I used a "IN" statement.首先,我检查客户编号是否在列表中,为此我使用了“IN”语句。 Then I check if a clientnumber is also in another table so that both numbers are equal.然后我检查 clientnumber 是否也在另一个表中,以便两个数字相等。
At last I want to exclude values that are ending on a certain value.最后我想排除以某个值结尾的值。 And this is where it goes wrong.这就是问题所在。
When I have just a single "NOT LIKE" it runs perfectly fine but when I use a "OR NOT LIKE" after that it keeps on running.当我只有一个“NOT LIKE”时,它运行得很好,但是当我使用“OR NOT LIKE”之后它继续运行。
See my query below:请参阅下面的查询:
SELECT "MAIL_ADDR", "ClientNumber", "CNumber"
FROM "ADRESSES", CUSTOMERS
WHERE "ClientNumber" IN ('0000206302','0000206307','0000206309','0000206321'
AND "ClientNumber" = "CNumber"
AND "MAIL_ADDR" NOT LIKE '%domain.nl'
OR "MAIL_ADDR" NOT LIKE '%domain.com'
I don't know what to change in my query as I don't get any error messages from Snowflake.我不知道要在我的查询中更改什么,因为我没有从 Snowflake 收到任何错误消息。 Maybe it has something to do with performance issues.也许它与性能问题有关。
The query could be rewritten to use JOIN syntax and condition for exclusion should be connected with AND
:可以重写查询以使用 JOIN 语法,排除条件应与AND
连接:
SELECT "MAIL_ADDR", "ClientNumber", "CNumber"
FROM "ADRESSES"
JOIN CUSTOMERS
ON "ClientNumber" = "CNumber"
WHERE "ClientNumber" IN ('0000206302','0000206307','0000206309','0000206321')
AND "MAIL_ADDR" NOT LIKE '%domain.nl'
AND "MAIL_ADDR" NOT LIKE '%domain.com';
A more compact way is to use NOT LIKE ANY syntax:一种更紧凑的方法是使用NOT LIKE ANY语法:
SELECT "MAIL_ADDR", "ClientNumber", "CNumber"
FROM "ADRESSES"
JOIN CUSTOMERS
ON "ClientNumber" = "CNumber"
WHERE "ClientNumber" IN ('0000206302','0000206307','0000206309','0000206321')
AND NOT ("MAIL_ADDR" LIKE ANY ('%domain.nl', '%domain.com'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.