[英]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.