SQL面试汇总
2018-01-07 14:26
295 查看
构建一个复合聚集索引
复合索引只适用于附加列与第一个列经常被组合查询或需要通过几个列来强制惟一性的时候。1.在
SQL Server Management Studio中,键入并执行以下语句在
OrderDetails表上创建一个复合聚集索引。
CREATE UNIQUE CLUSTERED INDEX CLIDX_OrderDetails ON dbo.OrderDetails(SalesOrderID,SalesOrderDetailID)
2.现在键入以下两个
SELECT语句。第一个语句查询
SalesOrderID的值为指定值的行,第二个语句查询
SalesOrderDetailID值为指定值的行。这两个列都是
CLIDX_OrderDetails索引的索引列。按
“Ctrl+L”来显示估计的执行计划。
SELECT * FROM dbo.OrderDetails WHERE SalesOrderID = 46999 SELECT * FROM dbo.OrderDetails WHERE SalesOrderDetailID = 14147
可以看出,在第一个搜索复合索引第一个列的值的查询中,
SQL Server使用一个索引查找来找到特定的行。在第二个查询中,它使用一个非常昂贵的索引扫描操作。使用这个索引扫描操作是因为不可能只依据复合索引第二个列找到值,因为这个索引起初是根据第一个列来进行排序的。因此,安排复合索引中索引列的顺序是非常重要的。记住,复合索引只适用于附加列与第一个列经常被组合查询或需要通过几个列来强制惟一性的时候。
SQLServer大量数据高效率分页
以下为从大数据量表检索分页数据的有效方法 测试时,先从LargeTable表选出1000条记录分页呈现--TIME_SEGMENT为数据表字段 declare @pagesize int--每页大小 declare @currentpage int--当前页 set @pagesize=2 set @currentpage=1 SELECT TOP (@pagesize) * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY h_job_id) AS id,COUNT(*) OVER() AS TOTAL,* FROM h_job where name='周一' ) as t WHERE t.id > (@pagesize*(@currentpage-1)) order by t.id;
测试结果,百万级的没有索引的表,为5s左右.
相关文章推荐
- SQL面试题目汇总
- sql面试题目汇总(就是想参考下,由于转自多个网站,没法写明出处,请原作者原谅)
- SQL面试题目汇总
- SQL面试题目汇总
- sql面试题目汇总(1)
- sql面试题目汇总(2)
- sql面试题目汇总(就是想参考下,由于转自多个网站,没法写明出处,请原作者原谅)
- SQL面试题目汇总
- 解决网友比较经典的SQL问题之数据查询汇总
- 【Java面试】2、面试题汇总
- java面试笔试题大汇总(1)
- →『C/C++ 笔试、面试题目大汇总[31-40]』
- 面试问题(非编程)汇总
- SQL入门书籍内容汇总
- java面试笔试题大汇总
- 二叉查找树的典型面试题目汇总
- Angular 2的12个经典面试问题汇总(文末附带Angular測试)
- SQL面试心得
- MS-SQL开发常用汇总和T-SQL技巧集锦
- 【伯乐在线】编程面试的10大算法概念汇总