sql server 重复校验查询优化

我这有张表,用于存放每天出库的产品序列号,录入前须验证数据表里面有没有重复的序列号,有则不能录入数据。现在表里已经由100万条数据了,重复查询速度变的很慢,序列号为WX201106101234 的字符串。前面几位是年月日,后面四位是流水号。各位有没有好的方法优化一下,急等。。。。。

作者: qcy8816468   发布时间: 2011-06-11

序列号字段加索引判断
SQL code
if exists(select 1 from tb where 序列号='WX201106101234')
 return
else
insert into tb ...

作者: zy112429   发布时间: 2011-06-11

-- 每天的序列号都是从1开始么?还是随机的?

-- 像这么大的表,应该有一个记录的创建日期字段,且应该用分区表(按日期月份分区) + 本地分区索引,那样的话:你去查询序列号存不存在,就不用去全表扫描查找,而是查找指定的分区就行啦!

作者: luoyoumou   发布时间: 2011-06-11

我是用存储过程查询重复

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[序列号重复查询]
@serialnum varchar(50),
@i int=0 output
as
if exists (select * from [序列号统计] where serialnum=@serialnum and deleted=1)
 begin
  set @i=1
 end
else
 begin
 set @i=0
 end
表里面有时间的字段,分区表应该怎么做,我是新手。。。

作者: qcy8816468   发布时间: 2011-06-11