1.
SELECT ID,商品品牌,商品型号,商品条码,商品报价,商品到货日期,商品生产厂网址,商品出厂日期 FROM data where 商品品牌 like '%"+Request.Cookies("pp")+"%' and 商号型号 like '%"+Request.Cookies("xh")+"%' and 商品生产厂 like '%"+Request.Cookies("scc")+"%' ORDER BY 商品出厂日期 DESC
2.
SELECT Top 200 ID,商品品牌,商品型号,商品条码,商品报价,商品到货日期,商品生产厂网址,商品出厂日期 FROM data ORDER BY 商品出厂日期 DESC
3.
select count(*) 符合厂家数 from data where datediff(day,商品出厂日期,getdate())<10
4.
select count(distinct 商品生产厂) 生产厂数 from data where datediff(day,商品出厂日期,getdate())<10
5.
select distinct 商品生产厂 from data order by 商品生产厂1.这样的查询建立索引无意义,都要进行全表扫描
2、3、4.在“商品出厂日期”上建索引可提高查询效率
5.在“商品生产厂”上建索引可提高查询效率

解决方案 »

  1.   

    我用SQL SERVER 2000 的索引优化向导得到以下结果,前高手看看有什么问题吗?
    速度的确是提高了,只是不知道会有什么其它影响没有?
    USE [data_pp] 
    goSET QUOTED_IDENTIFIER ON 
    SET ARITHABORT ON 
    SET CONCAT_NULL_YIELDS_NULL ON 
    SET ANSI_NULLS ON 
    SET ANSI_PADDING ON 
    SET ANSI_WARNINGS ON 
    SET NUMERIC_ROUNDABORT OFF 
    goDECLARE @bErrors as bitBEGIN TRANSACTION
    SET @bErrors = 0CREATE NONCLUSTERED INDEX [data2] ON [dbo].[data] ([商品出厂日期] ASC, [ID] ASC, [商品品牌] ASC, [商品型号] ASC, [商品条码] ASC, [商品到货日期] ASC, [商品报价] ASC, [商品生产厂简称] ASC, [商品生产厂简介] ASC, [商品提货省] ASC, [商品提货市] ASC, [商品生产厂] ASC )
    IF( @@error <> 0 ) SET @bErrors = 1CREATE NONCLUSTERED INDEX [data3] ON [dbo].[data] ([商品生产厂] ASC, [商品出厂日期] ASC )
    IF( @@error <> 0 ) SET @bErrors = 1CREATE NONCLUSTERED INDEX [data4] ON [dbo].[data] ([商品生产厂] ASC )
    IF( @@error <> 0 ) SET @bErrors = 1CREATE NONCLUSTERED INDEX [data5] ON [dbo].[data] ([商品出厂日期] ASC )
    IF( @@error <> 0 ) SET @bErrors = 1IF( @bErrors = 0 )
      COMMIT TRANSACTION
    ELSE
      ROLLBACK TRANSACTION
    /* Statistics to support recommendations */CREATE STATISTICS [hind_738101670_23A] ON [dbo].[data] ([用户级别])
    CREATE STATISTICS [hind_738101670_14A_1A_2A_3A_4A_9A_10A_13A_15A_22A] ON [dbo].[data] ([商品出厂日期], [id], [商品品牌], [商品型号], [商品条码], [商品到货日期], [商品报价], [商品生产厂简称], [商品生产厂], [商品生产厂简介])
    CREATE STATISTICS [hind_738101670_14A_1A_2A_3A_4A_7A_8A_9A_10A_13A_22A] ON [dbo].[data] ([商品出厂日期], [id], [商品品牌], [商品型号], [商品条码], [商品提货省], [商品提货市], [商品到货日期], [商品报价], [商品生产厂简称], [商品生产厂简介])
      

  2.   

    用like时%在前面索引就没有用了,建不建一样的。
      

  3.   

    1.
    SELECT ID,商品品牌,商品型号,商品条码,商品报价,商品到货日期,商品生产厂网址,商品出厂日期 FROM data where 商品品牌 like '%"+Request.Cookies("pp")+"%' and 商号型号 like '%"+Request.Cookies("xh")+"%' and 商品生产厂 like '%"+Request.Cookies("scc")+"%' ORDER BY 商品出厂日期 DESC
    2.
    SELECT Top 200 ID,商品品牌,商品型号,商品条码,商品报价,商品到货日期,商品生产厂网址,商品出厂日期 FROM data ORDER BY 商品出厂日期 DESC
    3.
    select count(*) 符合厂家数 from data where datediff(day,商品出厂日期,getdate())<10
    4.
    select count(distinct 商品生产厂) 生产厂数 from data where datediff(day,商品出厂日期,getdate())<10
    5.
    select distinct 商品生产厂 from data order by 商品生产厂1.这样的查询建立索引无意义,都要进行全表扫描
    2、
    3、4.在“商品出厂日期”上建索引(没有任何意义,因为对字段进行函数运算,无法使用索引。把条件改写为:商品出厂日期>'2005-11-18',这样就可以使用索引 )
    5.在“商品生产厂”上建索引可提高查询效率