加index用create index inx_ame on table(column1,column2....)
加上index对查询和更新的性能有很大的改善,但是至于性能能改善多少与你建的索引类型和你的查询语句有关

解决方案 »

  1.   

    加index用create index inx_ame on table(column1,column2....)
    加上index对查询和更新的性能有很大的改善,但是至于性能能改善多少与你建的索引类型和你的查询语句有关
      

  2.   

    CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
        ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) 
    [ WITH < index_option > [ ,...n] ] 
    [ ON filegroup ]< index_option > ::= 
        { PAD_INDEX |
            FILLFACTOR = fillfactor |
            IGNORE_DUP_KEY |
            DROP_EXISTING |
        STATISTICS_NORECOMPUTE |
        SORT_IN_TEMPDB  
    }
      

  3.   

    我說的是Table變量。
    即如果有 Declare @p table (id int)
    這樣: Create index idx_zhou ON @p(id) --這一句不行。之所以我想為Table變量加index,是因為我在查看執行計劃的時候,發現每次對table變量的操作都會引起Table Scan的動作。所以我想是否為它加一個index,就能改善速度呢?? 但我試了上面的加索引的方法不行。請各路高手賜教。
      

  4.   

    我說的是Table變量。
           ~~~~~~~~~~~
    即如果有 Declare @p table (id int)
    這樣: Create index idx_zhou ON @p(id) --這一句不行 
      

  5.   

    一剑兄开始用2000了?
    我现在机器上没有MSSQL2000
    晚上回家试试看.
      

  6.   

    IronPromises(铁诺),
     我一直都是用2000的。最近有個計算物料需求的SP需要做性能調整,里面有很多Table變量。看Execution Plan竟發現很多的table變量都做了Table Scan動作,頭疼。
      

  7.   

    对不起N_chow(一劍飄香) ,看错题目了
      

  8.   

    flowerofwind(现实很残酷) 
    沒關系。
      

  9.   

    : N_chow(一劍飄香) 在table变量中是不能创建索引的
    以下参考books online:
       返回一个 table 的 table 变量和用户定义函数只能用于某些 SELECT 和 INSERT 语句,而且其中 UPDATE、DELETE 和 DECLARE CURSOR 语句支持表。返回 table 的 table 变量和用户定义函数不能用于任何其它 Transact-SQL 语句。 
       在该表中使用的索引或其它约束必须被定义为 DECLARE variable 或 CREATE FUNCTION 语句的一部分。不得过后再使用它们,因为 CREATE INDEX 或 ALTER TABLE 语句不能引用表变量和用户定义的函数。 
      

  10.   

    mtdata(我很迷茫):
    不知道你發現沒有,SQL 2000的Table變量有很多地方的行為都讓人無法理解,比如說,按你的說的法,Table變量是不能加index,但是,你發現沒有,你可以為table變量加上Primary Key,從而Table變量會自己擁有一個Cluster index.但如果想用Create Index ON table變量,這樣就不行。
    還有,如果在table變量中想加Constraint,你是沒辦法直接用這樣子: Declare @p table (ex int Constraint check(ex<200)), MSSQL 2000會說"Server: Msg 156, Level 15, State 1, Line 1
    Incorrect syntax near the keyword 'check'.",
    但是如果把Constraint去掉,變成這樣:
    Declare @p table (ex int Check (ex<200)), 
    這樣就OK了!!!!
    實在是不明白MS SQL2000的table變量……各位高手,都來指點一吧…!!
      

  11.   

    From book_online
    与 CREATE TABLE 中定义表所用的信息子集相同的信息子集。表声明包括列定义、名称、数据类型和约束。允许的约束类型仅为 PRIMARY KEY、UNIQUE KEY 和 NULL。
    涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。 
    不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。
      

  12.   

    是啊~~table變量真是越看越窩火