![]() |
1
3
好吧,这是你的问题。对于这样的查询,您没有什么可以做的,如果您这样创建它,它将提高性能。
不能“优化”基于不健全架构的查询。 |
![]() |
2
2
尝试:
|
![]() |
3
1
在每个表名后面加上'with(nolock)'以提高性能 |
![]() |
4
1
以下可能会加快您的速度 SELECT * FROM SomeTable WHERE SomeTable.ID in (SELECT DISTINCT ID FROM SomeOtherTable Where Name = 'ABC') UNION SELECT * FROM SomeTable Where NOT EXISTS (Select spName From SomeOtherTable Where spName = 'ABC') 联合将有效地将其分为两个更简单的查询,这两个查询可以分别进行选择(这在很大程度上取决于DBMS、表大小等,这是否会真正提高性能——但它始终值得一试)。 “exists”关键字比“select count(1)”更有效,因为一旦遇到第一行,它就会返回true。 |
![]() |
5
1
或者先检查该值是否存在于db中 您可以删除查询中的distinct关键字,它在这里是无用的。 如果存在(从spname='abc'的其他表中选择spname) 开始 选择* 从某种意义上说 哪里 SomeTable.ID在 (从someOtherTable中选择id,其中name='abc') 结束 其他的 开始 选择* 从某种意义上说 结束 |
![]() |
6
0
阿罗哈 尝试
-爱德华 |
![]() |
7
0
将Where部分中的所有Select语句更改为内部jon。 OR条件应该是统一的。 还要确保索引正常。 有时候,为临时结果准备一个中间表是值得的,您可以将其加入其中。 |
![]() |
8
0
谢谢大家的建议。我将坚持我最初的询问。 |
![]() |
9
0
在我看来,您的查询中不需要“1=1”和“1=1”。1=1将始终评估为真,留下软件来评估下一部分…为什么不跳过1=1并评估多汁部分呢? |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 4 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 4 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 5 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 5 月前 |