Art*_*rtK 0 sql t-sql sql-server
鉴于10万记录表中哪两个会更快搜索?
create table #SearchSet(Item varchar(10))
insert into @SearchSet(Item)
values(('AA'),('BB'),('CC'),('DD22'),('AC123'),('456AA'),('125AA15'),('A154A'),('DDSSAA'),('55KKAA'))
select t1.*
from Table1 as t1
join #SearchSet as s
on t1.Column1 = s.Item
drop table #SearchSet
Run Code Online (Sandbox Code Playgroud)
或这个
select *
from Table1
where ColumnA = 'AA' or ColumnA = 'BB' or ColumnA = 'CC' or ColumnA = 'DD22' or ColumnA = 'AC123'
or ColumnA = '456AA' or ColumnA = '125AA15' or ColumnA = 'A154A' or ColumnA = 'DDSSAA' or `ColumnA = '55KKAA'`
Run Code Online (Sandbox Code Playgroud)
真正回答性能问题的唯一方法是测试环境中的不同版本.
比较的值很少(只有10),我希望该where子句能更好地工作.另外,在编写查询时,它无法利用索引,这可能真正有助于第一个版本.
如果添加索引,那么第一个可能与第二个竞争.试着这样做:
create table #SearchSet(Item varchar(10) primary key);
insert into @SearchSet(Item)
values(('AA'),('BB'),('CC'),('DD22'),('AC123'),('456AA'),('125AA15'),('A154A'),('DDSSAA'),('55KKAA'));
Run Code Online (Sandbox Code Playgroud)
如果您要比较数百或数千个值,我希望带有主键的临时表更快.
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |