none
如何建立表的主键 RRS feed

  • 问题

  • 我现在有一张客户库存明细表,字段是
    id(自增),公司编码,部门编码,客户编码,产品编码,库存量,有1000万条数据,请问如何建索引能够快速查询,主键如何建立?

    这个张表每周都会增加50000条数据,由客户周五通过excel导入数据库,
    每次查询报表都是使用,时间,然后关联产 品,客户,部门。

    这里我建立的id没有什么作用,也没有关联,所以不想用作主键,因为只有周五才会有数据上传,所以时间的重复量也很大,然后部门,产品等重复量都很大,不知道用哪个键做主键了,如果用id感觉又有点浪费了

    2012年1月16日 5:55

答案

全部回复

  • 你能否把具体的T-SQL代码发上来,因为哪怕是一个字段相差,或者过滤条件的细微差别,都可能导致完全不同的优化方式。



    2012年1月16日 9:54
  • Is that table related to any other tables in the db? Does any table in the db depend on specific column of it? If no for both, it may not need pkey at all. Just create clustered index on id column.
    2012年1月16日 17:57
  • 是的,我的这张表的ID和其他表没有关联,但是客户编码,公司编码是要关联其他表的,我疑惑的是,我不知道在哪个字段上建立聚集索引,因为建在ID上我感觉比较浪费,不建在ID上,建在哪个字段上了,每个字段的重复率都很高。

    2012年1月19日 2:06
  • Value of clustered index shouldn't change too often, new value should be in sequence to avoid page split, usually you do range search against that column, ... 

    2012年1月19日 4:18
  • 这个张表每周都会增加50000条数据=>增加時,要花多少時間呢? 需要考量太久的問題嗎?

    還是只要考量Search時的效能而已呢? where那些欄位呢?

    SQL Server版本是SQL 2008嗎?

    SQL DMV給您參考:[SQL]SQL Server 動態管理檢視和函數

     

     

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年1月19日 4:52
  • 不需要考虑增加时的效率,只要考虑查询的时候就够了!

    我给时间,部门编码和客户建立了非聚集索引,给自增ID建了聚集索引,感觉查询速度也还可以,但是每周我都要REBUILD索引和统计信息,不过查询速度还可以,但是总感觉聚集索引建在一个没有用的id上,感觉不合适。

    sqlserver是2005.

    2012年1月19日 5:44
  • 做优化不要凭“感觉”。要分析具体的情况,没有查询的代码和数据,很难分析该怎么建立索引的。
    想不想时已是想,不如不想都不想。
    2012年1月19日 13:23
    版主
  • Then you should find out best candidate based on business logic and queries.
    2012年1月19日 15:25