标签: non-clustered-index

表索引设计

我想在我的表中添加索引.我正在寻找如何向表中添加更多索引的一般想法.除PK聚集外.我想知道当我这样做时要寻找什么.所以,我的例子:

这个表(我们称之为TASK表)将成为整个应用程序的最大表.期待数百万条记录.

重要信息:大量批量插入正在此表中添加数据

表有27列:(到目前为止,并计数:D)

int x 9列= id-s

varchar x 10列

位x 2列

datetime x 5列

INT COLUMNS

所有这些都是INT ID-s,但来自通常小于Task表的表(最多10-50个记录),例如:状态表(具有"打开","关闭"等值)或优先级表(值类似于"重要的","不是那么重要","正常")还有一个像"父ID"(自我ID)的列

join:所有"小"表都有PK,通常的方式......聚集

STRING COLUMNS

有一个(公司)列(字符串!)类似于"始终长5个字符",并且每个用户都将被限制使用这个.如果在任务中有15个不同的"公司",则登录用户只能看到一个.所以这个过滤器总是有一个过滤器.为这个专栏添加索引可能是个好主意吗?

日期栏目

我认为他们没有索引这些......对吧?或者可以/应该是?

sql database-design sql-server-2005 clustered-index non-clustered-index

2
推荐指数
1
解决办法
280
查看次数

非聚类索引中的行定位器

我正在阅读Non Clustered Index哪些内容" Nonclustered索引仅包含索引列和行定位器中指向实际数据行的值,而不是包含数据行本身.这意味着查询引擎必须采取额外步骤才能找到实际数据."

查询 - 我不清楚Row Locator.我假设它不是任何Primary key.背景中发生的事情与Row-Locator唯一标识行有关.

sql-server sql-server-2005 sql-server-2008 non-clustered-index

2
推荐指数
1
解决办法
2987
查看次数

为什么SQL Server将4字节整数添加到非唯一聚簇索引

可以将非唯一列定义为聚簇索引以及非聚簇索引.但是,如果未将列定义为唯一,则SQL Server会在聚簇索引的情况下向索引列添加4字节整数.这样做是为了在内部保持记录的"唯一性",即使两个或多个记录可能具有该列的值.为什么在非聚集索引的情况下不需要这个整数?

sql-server indexing clustered-index non-clustered-index

2
推荐指数
1
解决办法
964
查看次数

NONCLUSTERED 索引命令 (MySQL) 在 MySQL 或 Workbench 中不可用

当我以简单的方式创建时index,一切正常:

create index qty_ix on vacancy_desc_to_words (qty);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试创建 时NONCLUSTERED INDEX,我遇到了问题: a WorkbenchnotMySQL console都不知道NONCLUSTEREDINCLUDE命令。


在此输入图像的描述


在此输入图像描述


Linux 下的 MySQL 版本:

mysql  Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using  EditLine wrapper
Run Code Online (Sandbox Code Playgroud)

问题:

如何使用NONCLUSTERED/INCLUDE命令?

mysql indexing non-clustered-index

2
推荐指数
1
解决办法
9193
查看次数

创建非聚簇PK语法是否不一致?

SQL Server 2008 R2

为什么

create table A
(
   id int,
   primary key nonclustered (id)
)
Run Code Online (Sandbox Code Playgroud)

是正确的,执行没有错误?

create table A
(
   id int,
   primary key nonclustered id
)
Run Code Online (Sandbox Code Playgroud)

是错误的?给

')'附近的语法不正确.

附带问题:
为什么

create table c(id int primary key clustered)  
Run Code Online (Sandbox Code Playgroud)

被执行
但是

create table c(id int primary key nonclustered)
Run Code Online (Sandbox Code Playgroud)

是错误的?对不起,两个都有效.

是否建议纠正语法不一致?

t-sql sql-server primary-key sql-server-2008-r2 non-clustered-index

1
推荐指数
1
解决办法
1001
查看次数

SQL Server:未使用非聚集索引

我已经阅读了很多关于索引和它们之间差异的内容。现在我正在我的项目中进行查询优化。我创建了非聚集索引,应该用于查询执行,但事实并非如此。详情如下:

桌子:

在此处输入图片说明

指数:

CREATE NONCLUSTERED INDEX [_IXProcedure_Deleted_Date] ON [por].[DailyAsset]
(
    [Deleted] ASC,
    [Date] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

实体框架生成的查询:

exec sp_executesql N'SELECT 
[Project1].[C1] AS [C1], 
[Project1].[AssetId] AS [AssetId], 
[Project1].[Active] AS [Active], 
[Project1].[Date] AS [Date]
FROM ( SELECT 
    [Extent1].[AssetId] AS [AssetId], 
    [Extent1].[Active] AS [Active], 
    [Extent1].[Date] AS [Date], 
    1 AS [C1]
    FROM [por].[DailyAsset] AS [Extent1]
    WHERE (0 = [Extent1].[Deleted]) AND ([Extent1].[Date] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server non-clustered-index

1
推荐指数
1
解决办法
3192
查看次数

使用索引加速ORDER BY子句

我有一个查询,ORDER BY因为该表有超过1,100万行,所以该子句很慢.

通过在ORDER BY子句中的列上添加聚簇索引,我可以大大加快速度.但是,软件会根据用户设置创建按不同列排序的查询.并且您不能向表中添加多个聚簇索引.

我的问题是:可以使用非聚集索引来提高ORDER BY性能吗?或者有没有关于聚簇索引的特殊内容,这意味着我将无法对所有列快速排序?

注意:我已经在线发布了我的真实查询和执行计划,但还有其他问题我不想在这里讨论.我没有创建数据库或编写查询.即使没有该IN子句,查询仍然很慢.

sql t-sql sql-server clustered-index non-clustered-index

0
推荐指数
1
解决办法
484
查看次数

我可以删除 SQL Server 中定义了非聚集索引的表的列吗

我有一个记录数量巨大的表。某些列上定义了非聚集索引。

我们需要更改/删除一些定义了此类索引的列。

我直接更改/删除了列,但没有收到任何错误,例如:

Alter statement failed。它成功了。所以,我的问题是:

是否需要删除要删除/更改的列上的非聚集索引?

why it did give any errors similar to case of constraints/keys defined on them ?
Run Code Online (Sandbox Code Playgroud)

更新 :

What incase of alteting a column for its size ? Is it supposed to throw any error ?
Run Code Online (Sandbox Code Playgroud)

sql-server alter non-clustered-index

-1
推荐指数
1
解决办法
842
查看次数