SQL2005商品异动表  AAction-------每天从异地数据库(ASE 12.5)触发生成,
结构:
日期(A_date),类型(A_type),区域(A_Loaction),单据号码(A_ref_no),商品款号(item_no),规格1(spec1),规格2(spec2),数量(qty),成本(cost),AIdentityA_type类型有(销售,退货,进货,退供应商,仓店进,仓店出等)
商品款号(item_no)+规格1(spec1)+规格2(spec2) 为一个单品因为这个表每天涉及到大批量的远程数据插入,没有建立索引。因此想建一个视图View_AAction,然后建立索引,请问这个索引我应该怎样建?具体哪几个列比较合适?
主要的操作是更具统计进销存等数据。前期导入这个表AAction的记录数大概有50万条记录,每天估计有1000调数据会插入到表中。

解决方案 »

  1.   

    索引的作用就象书的目录,给出条件查找目录找出所需要的内容 
    主键索引和聚合索引 我们来看:(gid是主键,fariqi是聚合索引列): select top 10000 gid,fariqi,reader,title from tgongwen 
    用时:196 毫秒。 扫描计数 1,逻辑读 289 次,物理读 1 次,预读 1527 次。 select top 10000 gid,fariqi,reader,title from tgongwen order by gid asc 
    用时:4720毫秒。 扫描计数 1,逻辑读 41956 次,物理读 0 次,预读 1287 次。 select top 10000 gid,fariqi,reader,title from tgongwen order by gid desc 
    用时:4736毫秒。 扫描计数 1,逻辑读 55350 次,物理读 10 次,预读 775 次。 select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi asc 
    用时:173毫秒。 扫描计数 1,逻辑读 290 次,物理读 0 次,预读 0 次。 select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi desc 
    用时:156毫秒。 扫描计数 1,逻辑读 289 次,物理读 0 次,预读 0 次。 从以上我们可以看出,不排序的速度以及逻辑读次数都是和“order by 聚集索引列” 的速度是相当的,但这些都比“order by 非聚集索引列”的查询速度是快得多的。 
    同时,按照某个字段进行排序的时候,无论是正序还是倒序,速度是基本相当的。
      

  2.   

    日期(A_date),类型(A_type),区域(A_Loaction)
    这几个经常用的一般肯定得键上,
      

  3.   

    根据你的查询条件来判断,
    2005中有相应的查询优化向导,
    可以帮助你建立索引的.
    也可以查询动态管理视图来实现,SELECT   migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure,   'CREATE INDEX [missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle)   + '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'  + ' ON ' + mid.statement   + ' (' + ISNULL (mid.equality_columns,'')     + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END     + ISNULL (mid.inequality_columns, '')  + ')'   + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,   migs.*, mid.database_id, mid.[object_id]FROM sys.dm_db_missing_index_groups migINNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handleINNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handleWHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC