什么是SQLServer创建in索引的方式如下?

时间:2014-06-06 07:50:16

标签: sql-server oracle

以下行适用于Oracle,但对于SQLServer,它不起作用,

   CREATE INDEX IDX_1
      ON Table1
        (UID1,
         UID2,
         CONFIG,
         DATE,
         (UPPER(NAME)))

目前这表示'('附近的索引不正确。 有任何想法吗 ? 我听说过Collat​​e,但不知道如何使用它。

2 个答案:

答案 0 :(得分:1)

SQL Server替代方案如下:

CREATE TABLE Table1 (
    UID1 int not null,
     UID2 int not null,
     CONFIG int not null,
     DATE int not null, --:)
     NAME varchar(39) not null,
     UPPERNAME as UPPER(Name) PERSISTED
)

然后你可以创建一个索引:

CREATE INDEX IDX_1
  ON Table1
    (UID1,
     UID2,
     CONFIG,
     DATE,
     UPPERNAME)

不幸的是,对于您从此索引中查询受益,必须将其修改为直接使用UPPERNAME,而不是使用UPPER上的NAME函数1}}列。

答案 1 :(得分:-1)

看起来应该是这样的

CREATE NONCLUSTERED INDEX IDX_1 on Table1
(
    [UID1] ASC,
    [UID2] ASC,
    ....
)WITH 
(PAD_INDEX = OFF, 
STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, 
DROP_EXISTING   = OFF, 
ONLINE = OFF, 
ALLOW_ROW_LOCKS = ON, 
ALLOW_PAGE_LOCKS = ON)

如你所见,你应该熟悉很多参数。

我建议开始使用的一种方法是创建索引 SQL Server Management Studio UI助手然后创建脚本 使用助手顶部的按钮,对我来说这是一种很好的学习方式 这个。 目前我不确定是否使用像UPPER这样的函数调用来创建索引 可能与SQL Server,但我真的不知道这是否可能, 但是如果你把一把手枪放在我的胸前,我宁愿说不; o)