none
【SQL】sql中的几个问题 RRS feed

答案

  • 1.一般不建议用gui界面创建,选择表,展开,选择索引,右键,点击新建索引(2005以后,2000的直接右键表)

    2.索引分聚集索引和非聚集索引,具体定义你可以查帮助。通常sql server会在建立主键的同时为这个字段生成聚集索引。

    3.同一个字段建立多个索引其实没有必要,除非你设定排序方式等不一样才有必要。

    这些你都可以自己建表测试。

     


    family as water
    • 已标记为答案 jinwb1982 2010年4月19日 12:36
    2010年4月17日 1:40
  • 针对第二个问题,建立索引可以直接用GUI界面操作。这样应该如何建立索引呢?我发现当新建表之后,如果该表存在主键,那么默认在该表的索引菜单下,会发现一个以为表名命名的聚集索引,这个索引的作用是什么?好想还可以建立其他索引,如果再建立索引会发生什么效果,望详细指教。谢谢!

     

    这样应该如何建立索引呢?  设计表

    主键 是约束, sqlserver 2000 会自动在上面做索引,  因为 "主键" ,  "关系"  ,是要和别的表"关系"的(:)

    不建索引 ,本身就不太合理,

    建立其他索引 与那个影响不大, 你建就行.

     

    • 已标记为答案 jinwb1982 2010年4月19日 12:36
    2010年4月19日 8:39
  •  聚集索引确定表中数据的物理顺序。由于它规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引)

    非聚集索引与聚集索引一样有B树结构,但是数据行不按非聚集索引键的顺序排序和存储。   

    如果你建立了聚集索引,仍然还可以建立其他非聚集索引,但不可以再建立聚集索引了。

    • 已标记为答案 jinwb1982 2010年4月19日 12:36
    2010年4月19日 11:29
  • 一:主键是索引么?

    二:如何建立索引?

    三:如何在存储过程中引用索引?


    1。对表定义了Primary Key约束的时候,会自动创建索引。
    2。e.g:
    use Test
    go
    if object_id('test') is NOt Null  
      Drop Table Test
    Go
    Create Table Test
    (
      id int Identity(1,1),
      Code nvarchar(50),
      Name nvarchar(50),
      Constraint PK_Test Primary Key Nonclustered(ID) --要是没有Nonclustered就默认是Clustered,会创建一个聚集索引
    )
    --在列Code创建一个非聚集索引
    Create Nonclustered Index IX_Test_Code On Test (Code Asc)
    GO
    3. e.g:
    Select * From test With(Index(IX_Test_Code)) Where Code='0001'

    • 已标记为答案 jinwb1982 2010年4月19日 15:43
    2010年4月19日 14:39

全部回复

  • 主键是用索引实现的, 你可以把它算作索引, 标准的称呼是主键约束

    建立索引可以直接用GUI界面操作, 也可以直接用 CREATE INDEX 语句

    索引是基于表的, 你可以通过 WITH INDEX 引用, 类似于: SELECT * FROM TB WITH(INDEX(索引1,索引2)), 一般建议让查询优化器自动选择索引, 而不是强制指定.

    2010年4月16日 4:35
  • 主键是用索引实现的, 你可以把它算作索引, 标准的称呼是主键约束

    建立索引可以直接用GUI界面操作, 也可以直接用 CREATE INDEX 语句

    索引是基于表的, 你可以通过 WITH INDEX 引用, 类似于: SELECT * FROM TB WITH(INDEX(索引1,索引2)), 一般建议让查询优化器自动选择索引, 而不是强制指定.


    针对第二个问题,建立索引可以直接用GUI界面操作。这样应该如何建立索引呢?我发现当新建表之后,如果该表存在主键,那么默认在该表的索引菜单下,会发现一个以为表名命名的聚集索引,这个索引的作用是什么?好想还可以建立其他索引,如果再建立索引会发生什么效果,望详细指教。谢谢!

     

    2010年4月16日 5:05
  • Sql creates unique index for pkey, that guarantees unique key value. Each table can have 250 indices/constraints, they can improve query performance if created properly. Books online has details.
    2010年4月16日 12:34
  • 1.一般不建议用gui界面创建,选择表,展开,选择索引,右键,点击新建索引(2005以后,2000的直接右键表)

    2.索引分聚集索引和非聚集索引,具体定义你可以查帮助。通常sql server会在建立主键的同时为这个字段生成聚集索引。

    3.同一个字段建立多个索引其实没有必要,除非你设定排序方式等不一样才有必要。

    这些你都可以自己建表测试。

     


    family as water
    • 已标记为答案 jinwb1982 2010年4月19日 12:36
    2010年4月17日 1:40
  • 针对第二个问题,建立索引可以直接用GUI界面操作。这样应该如何建立索引呢?我发现当新建表之后,如果该表存在主键,那么默认在该表的索引菜单下,会发现一个以为表名命名的聚集索引,这个索引的作用是什么?好想还可以建立其他索引,如果再建立索引会发生什么效果,望详细指教。谢谢!

     

    这样应该如何建立索引呢?  设计表

    主键 是约束, sqlserver 2000 会自动在上面做索引,  因为 "主键" ,  "关系"  ,是要和别的表"关系"的(:)

    不建索引 ,本身就不太合理,

    建立其他索引 与那个影响不大, 你建就行.

     

    • 已标记为答案 jinwb1982 2010年4月19日 12:36
    2010年4月19日 8:39
  •  聚集索引确定表中数据的物理顺序。由于它规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引)

    非聚集索引与聚集索引一样有B树结构,但是数据行不按非聚集索引键的顺序排序和存储。   

    如果你建立了聚集索引,仍然还可以建立其他非聚集索引,但不可以再建立聚集索引了。

    • 已标记为答案 jinwb1982 2010年4月19日 12:36
    2010年4月19日 11:29
  • 一:主键是索引么?

    二:如何建立索引?

    三:如何在存储过程中引用索引?


    1。对表定义了Primary Key约束的时候,会自动创建索引。
    2。e.g:
    use Test
    go
    if object_id('test') is NOt Null  
      Drop Table Test
    Go
    Create Table Test
    (
      id int Identity(1,1),
      Code nvarchar(50),
      Name nvarchar(50),
      Constraint PK_Test Primary Key Nonclustered(ID) --要是没有Nonclustered就默认是Clustered,会创建一个聚集索引
    )
    --在列Code创建一个非聚集索引
    Create Nonclustered Index IX_Test_Code On Test (Code Asc)
    GO
    3. e.g:
    Select * From test With(Index(IX_Test_Code)) Where Code='0001'

    • 已标记为答案 jinwb1982 2010年4月19日 15:43
    2010年4月19日 14:39
  • 万分感谢。由此我再隐身一个小问题。比如 table彪 中有2个字段 id  name。其中id为主键并自动加一。按照前面朋友所说的,为其创建主键自动创建了索引(主索引)。那么我在存错过程中使用select name from table order by id desc  这样是否就相当使用了索引呢?

    2010年4月19日 15:48
  • Will not because your query doesn't have where clause, sql will do clustered index scan (same as table scan here).
    2010年4月19日 15:53