我有
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true"
android:state_pressed="true" android:drawable="@color/charcoal_dark" />
<item android:state_enabled="true"
android:state_focused="false" android:drawable="@color/charcoal_dark" />
<item android:drawable="@color/black"/>
</selector>
我的存储过程中的查询如下所示,在我的程序中被调用超过10次。
tableA (strX varchar(10), strY varchar(10))
Values ('Me', 'Today')
('You', 'Yesterday')
tableB (strP varchar(10), strQ varchar(10))
Values ('He', 'Rejected')
('Me', 'Accepted')
('You', 'Rejected')
('Her', 'Accepted')
有没有办法可以将tableA中的strX存储到一个变量中并像下面一样使用它?
Select * from tableB Where strp in (Select strX from tableA);
Declare @strValues = (Select strX from tableA);
Select * from tableB Where strp in @strValues;
中strX
的所有条目都不是动态的。
答案 0 :(得分:0)
为什么你会费心尝试将工作查询转换为其他东西?
如果您关心性能,那么只需将strX
作为主键:
create tableA (
strX varchar(10) primary key,
strY varchar(10)
);
这应该非常快。
答案 1 :(得分:0)
不要贬低其他人在这里所说的内容,但我认为下面的表变量在技术上是你所要求的:
mMaterial = iShield.GetComponent<Renderer>().material;
我怀疑这会是一种改进,但会为它的价值提供它。
答案 2 :(得分:0)
您可以使用strX值创建临时表 并使用主键进行索引。
在名称中添加#使其成为临时表 断开会话后会自动删除。
create table #tmpX (strX varchar(10) primary key);
然后将TableA中的strX值插入该值。
insert into #tmpX (strX)
select strX from TableA;
然后在查询中使用该临时表。
你可以使用IN 而且,INNER JOIN或EXISTS
select b.*
from tableB b
inner join #tmpX a on (a.strX = b.strP);
select *
from tableB b
where exists (
select 1
from #tmpX a
where a.strX = b.strP
);
无论如何,在tableB.strP上添加索引可能也有助于加快它的速度。