如果我 select 只在第一行有四个 select ,它在 sql 中有多快
how fast ist it in sql if I would select only the first row with four selects
我对外观与 Union Select Only One Row 一样有疑问
但与小不同。我有四个 select 与联合声明相结合。
select top 1 value from (
select 1 as id, value from resource where rkey = 'a'
union
select 2 as id, value from resource where rkey = 'b'
union
select 3 as id, value from resource where rkey = 'c'
union
select 4 as id, value from resource where rkey = 'd'
) as x
order by id
每个 select 语句只返回一行或零行。我已经会使用所有 select 的第一个结果。因此,如果第一个 select returns 行,则应忽略其他 select 行。如果第二个 select 返回该行(第一个 select 不返回任何行),那么其他的应该被忽略。等...
我的问题是:这个组合有多快,或者有更快的解决方案吗?
或跳过 UNION
:
select top 1 value
from resource
where rkey in ('a','b','c','d')
order by rkey
如果 key
被索引,您的方法(但使用 UNION ALL
)可能是最好的。
否则试试:
select top 1 value
from resource
where rkey in ('a', 'b', 'c', 'd')
order by
case rkey
when 'a' then 1
when 'b' then 2
when 'c' then 3
when 'd' then 4
end
我对外观与 Union Select Only One Row 一样有疑问 但与小不同。我有四个 select 与联合声明相结合。
select top 1 value from (
select 1 as id, value from resource where rkey = 'a'
union
select 2 as id, value from resource where rkey = 'b'
union
select 3 as id, value from resource where rkey = 'c'
union
select 4 as id, value from resource where rkey = 'd'
) as x
order by id
每个 select 语句只返回一行或零行。我已经会使用所有 select 的第一个结果。因此,如果第一个 select returns 行,则应忽略其他 select 行。如果第二个 select 返回该行(第一个 select 不返回任何行),那么其他的应该被忽略。等...
我的问题是:这个组合有多快,或者有更快的解决方案吗?
或跳过 UNION
:
select top 1 value
from resource
where rkey in ('a','b','c','d')
order by rkey
如果 key
被索引,您的方法(但使用 UNION ALL
)可能是最好的。
否则试试:
select top 1 value
from resource
where rkey in ('a', 'b', 'c', 'd')
order by
case rkey
when 'a' then 1
when 'b' then 2
when 'c' then 3
when 'd' then 4
end