表中有一编码字段,格式:年月日+编号
现在要查某段时间的记录,是把编码中的年月日转为日期来比较好呢,还是把日期转为字符串来比较好呢

解决方案 »

  1.   

    简单做了下测试,第二种方式要快一点
    CREATE TABLE Test (
    编号 nvarchar (50) NOT NULL,
    字段1 nvarchar (50),
    字段2 nvarchar (50),
    字段3 nvarchar (50)
    )ON [PRIMARY]ALTER TABLE Test ADD 
    CONSTRAINT [PK_Test] PRIMARY KEY  CLUSTERED 
    (
    编号
    )  ON [PRIMARY] 
    GO
    DECLARE @i int 
    SET @i=0WHILE @i<500000 
    BEGIN
      INSERT INTO Test SELECT '2008-06-01'+CAST(@i AS nvarchar(10)),'任意字','任意字','任意字'
      SET @i=@i+1
    ENDSELECT * FROM TEST WHERE CAST(SUBSTRING(编号,0,11) AS dateTime)>getDate()SELECT * FROM TEST WHERE 编号 LIKE '2008-06-01%'DROP TABLE TEST
      

  2.   

    其他就不讲了,偶要提醒楼主在大数据量的时候以时间字符串做为查询条件在查跨年查询时有可能不能使用索引,要使用强制索引偶的一套生产系统应此死了6回(oracle)