SQL Server面试查询索引?

标签 sql sql-server sql-server-2008

我从 NET 收到了一个面试问题,但没有找到合适的解决方案谁能告诉我 我这个查询有什么问题?

给定这个表结构和索引,后续查询有什么问题?

CREATE TABLE dbo.IndexQ (
ID int IDENTITY(1, 1) NOT NULL,
TestBit bit NOT NULL
)
GO

CREATE NONCLUSTERED INEX IX_IndexQ_TestBit ON dbo.IndexQ (TestBit)
GO

* Insert some rows where some bits are 0 and some are 1...

SELECT *
FROM dbo.IndexQ
WHERE TestBit = 1
* What's the problem with this query?

最佳答案

我想问题出在您的位字段上的 NONCLUSTERED 索引中。如果你有一个大表,你不应该在位字段上建立索引,因为它有更多的记录,它们索引的效率会降低,但你会在上面使用更多的日期。

参见 https://dba.stackexchange.com/questions/12888/should-i-index-a-bit-field-in-sql-server

关于SQL Server面试查询索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15875427/

相关文章:

sql-server - SQL Server 对列进行逆透视

sql-server - 在 SSIS 中选择忽略失败时忽略的行会发生什么?

mysql - 如何选择和更新涉及两个表的查询

python - sqlalchemy 过滤多列

sql - 从 SQL Server 中的 JOIN 结果中获取不同的行

sql - 如何选择列值不不同的每一行

java - 如何避免将空值发送到java中的sql中

mysql - 如何在我的插入值命令中插入 Bool 的值?

SQL 表作为矩阵 (T-SQL)

sql - 使用带有 MAX() 的 GROUP BY 作为聚合与使用 ROW_NUMBER 进行分区相比,是否存在性能差异?