列a,b,c,d有多个字段索引,id列有另一个唯一索引。在将id添加到ORDER BY之后,我的查询是否会像下面那样大幅度减慢,或者我不需要担心?查询计划显示排序只得到1%。
SELECT *
FROM
(SELECT *,
row_number() over (
ORDER BY a,b,c,d,id ) AS ROW
FROM table1
WHERE /* ... */) a
WHERE ROW > 0
AND ROW <= 20000;
📷
关于MS SQL-Server,表的主键列是否包含在该表的常规非唯一索引中?
如果不是,将其包含在索引中是否有意义?
create table dbo.People (
PK_PersonId int not null,
PersonName nvarchar (100),
Bunch of Other Fields
,
因此,在PersonName上创建索引时,添加主键列PK_PersonId是否有意义?
在datawarehouse环境中工作( Server 2008),有几个表有大约200万行和20列。每天晚上,桌子都会被丢弃并重新创建。创建索引时,也会生成索引。由于某些原因,这些表上没有聚集索引。但是,有一些唯一的非聚集索引。似乎不合逻辑。有谁知道改变所有这些表有聚集索引的缺点吗?应该会节省一些空间并表现得更好。
有小费吗?
提前谢谢。
是的,这是,是的复制品。但是,我只需要澄清一下的Pinal ,它说:
场景4:主键默认为聚集索引,其他索引默认为非聚集索引。
在本例中,我们将在这两个表上创建两个索引,但我们不会在列上指定索引的类型。当我们检查结果时,我们会注意到主键自动默认为聚集索引,另一列为非聚集索引。
- Case 4主键和默认值使用TempDB GO --创建表创建表TestTable ( INT主键,Col1 INT NULL唯一) GO --检查索引选择OBJECT_NAME(OBJECT_ID) TableObject,name IndexName,Type_Desc FROM FROM sys.indexes
在sql server 2005中,是否可以将聚集索引转换为非聚集索引,或者将非聚集索引转换为聚集索引。
请将此查询转换为聚集索引:
create index index1 on mytable(firstcolumn)
请将此查询转换为非聚集索引:
create clustered index clusindex1 on mytable(cluscolumn)
我正在学习锁的基本知识,我对它的工作方式有一些疑问。我使用以下查询来检查事务锁:
SELECT request_session_id AS spid ,
DB_NAME(resource_database_id) AS dbname ,
CASE WHEN resource_type = 'OBJECT'
THEN OBJECT_NAME(resource_associated_entity_id)
WHEN resource_associated_entity_id = 0 THEN 'n/a'
ELSE OBJECT_NAME(p.object_id)
EN
我正在努力学习覆盖索引的知识。在Northwind数据库中,我从表类别中选择:
📷
如您所见,表在列CategoryName上有一个非聚集索引。
这个SQL查询:
select CategoryName from Categories where Categories.CategoryName like 'Beverages'
返回具有索引查找的执行计划:
📷
然而,这一点:
select CategoryName ,Description from Categories where Categories.CategoryName like 'Beverages
我是SQLServer的新手,有一件事真的困扰着我。希望你们中有人能给我解释一下发生了什么。
当我在索引过程中运行活动监视器时,我意识到包括弱实体在内的一些查询花费的时间比预期的要长,甚至更奇怪的是,SQLServer建议在表单的弱实体上创建索引
CREATE NONCLUSTERED INDEX [<INDEXNAME>]
ON [dbo].[<TABLE>] ([<ID1>])
INCLUDE ([<ID2>])
GO
这样做(实际上我索引了两个列,但我认为结果几乎相同)确实提高了查询速度(至少从我在活动监视器中可以看到的情况来看是这样)。
是否应该将许多表编入索引?什么样的指数才是最好的?
下面是一个示例表:
CREATE TABLE user_role (
userId INT,
roleId INT
)
--edit: drachenstern - I added the table def based on the original comments, and assumed ints.
我们的网站受到了很大的冲击,所以我们正在考虑优化一些现有的查询。
在研究这一点时,我们遇到了几个查询,当查询中有聚集索引的简单引用时,它们的执行计划大约快4-5倍……例如
如果这是旧查询:
SELECT ...
FROM myTable
WHERE categoryID = @category
根据SSMS中的执行计划,以下查询速度将提高4倍:
SELECT ...
FROM myTable
WHERE categoryID = @category
AND lotID = lotID
我们似乎无法理解这将如何使查询速度更快。聚集索引在lotID上,但是由于它在与自身进行比较,这有什么帮
这是个奇怪的发现。我正在对一个会话进行选择和删除,在同一行的另一个会话上删除,请参见下面的代码。部门有聚集索引。
------Session 1----------
set transaction isolation level repeatable read
begin transaction
select * from HumanResources.Department
------session 2 ------------
set transaction isolation level repeatable read
begin transaction
delete from Hum