繁体   English   中英

SQL Server 2008 R2创建索引

[英]SQL Server 2008 R2 Create index

现在我正在寻找你的帮助来创建这些索引。

现在这是我的表结构

表格描述屏幕上限

这个查询我需要索引以获得最大性能。

select PageId 
    from tblPages 
    where UrlChecksumCode = @UrlChecksumCode 
        and PageUrl = @PageUrl

现在我对索引很糟糕。 我计划一样,当执行查询时它会首先发现UrlChecksumCode行再看看PAGEURL列。 如果你也解释我为什么要做这样的索引我真的很感激。 谢谢。

一种方式,因为你的pageURL很长(nvarchar(1000),如果你不使用包含的列,索引只能是900字节,我用包含的列创建了这个索引

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl)

要么

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl, PageID)

另请参阅SQL Server覆盖索引

为什么URL nvarchar而不是varchar ...它们可以是unicode吗? 如果没有使它varchar并保存1/2的大小

创建非聚集索引

       create nonclustered index indexname on tablename(columnname)

掉落指数

       Drop Index index name on tablename

查看数据库中的所有索引

       select * from sys.indexes

如果你想创建集群,那么你可以使用它,

CREATE CLUSTERED INDEX IX_IndexName ON tblPages (UrlChecksumCode) INCLUDE(PageUrl)

以下查询检索在表上创建的索引。

EXECUTE sp_helpindex tablename

集群索引简介: -

聚簇索引定义数据物理存储在表中的顺序。 表数据只能以排序方式排序,因此每个表只能有一个聚簇索引。 在SQL Server中,主键约束会自动在该特定列上创建聚簇索引。 或者您可以创建自定义群集索引,删除由主键创建的默认群集索引。

你可能想要一个索引(UrlChecksumCode and PageUrl) ,因为这是它所选择的。

虽然你可能,在某些数据模式,有更好的表现,如果你只是(指数超过UrlChecksumCode ),因为PageUrl需要更大的文本索引

我认为即使我们可以使用clusterd索引作为快速搜索,例如在tableName(columnName1,columnName2,......)上创建clusteredindex someName,但我们只能为选项卡创建一个聚簇索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM