SqlServer基础--Select *与Select 指定列的区别

select * from table
  • 有聚集索引:聚集索引扫描
  • 没有聚集索引 :表扫描
select 所有的列名 from talbe
  • 有聚集索引:聚集索引扫描
  • 没有聚集索引 :表扫描
select 索引中的列名  from talbe
  • 指定索引的扫描

以文本的展示执行计划
SET SHOWPLAN_TEXT ON
GO

测试Sql 语句

CREATE DATABASE Test6;
GO
USE Test6;
GO
Create table BusinessInfoTable
(
    BuniessCode1 varchar(50),
    BuniessCode2 varchar(50),
    BuniessCode3 varchar(50),
    BuniessCode4 varchar(50),
    BuniessStatus1 tinyint,
    BuniessStatus2 tinyint,
    BuniessDateTime1 Datetime,
    BuniessDateTime2 Datetime,
    OtherColumn1 varchar(50),
    OtherColumn2 varchar(50),
    OtherColumn3 varchar(50)
)

declare @i int=0
while @i<1000000
begin
    insert into BusinessInfoTable 
    values 
    (
        NEWID(),NEWID(),NEWID(),NEWID(),RAND()*100,RAND()*100,
        DATEADD(MI,@i,GETDATE()),DATEADD(MI,@i,GETDATE()),NEWID(),NEWID(),NEWID()
    )
    set @i=@i+1
end

CREATE NONCLUSTERED INDEX IDX_1 ON BusinessInfoTable 
(BuniessStatus1,BuniessStatus2,BuniessDateTime1,BuniessDateTime2)
INCLUDE(OtherColumn2)
--或者这样,只是索引前导列顺序不一样
CREATE NONCLUSTERED INDEX IDX_2 ON BusinessInfoTable
(BuniessDateTime1,BuniessDateTime2,BuniessStatus1,BuniessStatus2)
  1. 如果没聚集索引

● 显示所有列

USE [Test6]
GO
SELECT top 10 
      [BuniessCode1]
      ,[BuniessCode2]
      ,[BuniessCode3]
      ,[BuniessCode4]
      ,[BuniessStatus1]
      ,[BuniessStatus2]
      ,[BuniessDateTime1]
      ,[BuniessDateTime2]
      ,[OtherColumn1]
      ,[OtherColumn2]
      ,[OtherColumn3]
  FROM [dbo].[BusinessInfoTable]
GO


SELECT top 10 *
  FROM [dbo].[BusinessInfoTable]
GO

1

● 索引中的列

SELECT top 10 
     BuniessStatus1,BuniessStatus2,BuniessDateTime1,BuniessDateTime2
      ,[OtherColumn2]
  FROM [dbo].[BusinessInfoTable]
GO


SELECT top 10 *
  FROM [dbo].[BusinessInfoTable]
GO

2

  1. 聚集索引

     创建聚集索引:
    CREATE CLUSTERED INDEX IDX_3 ON BusinessInfoTable 
    (BuniessCode1)
    

● 显示所有列

USE [Test6]
GO
SET SHOWPLAN_TEXT ON
GO

SELECT top 10 
      [BuniessCode1]
      ,[BuniessCode2]
      ,[BuniessCode3]
      ,[BuniessCode4]
      ,[BuniessStatus1]
      ,[BuniessStatus2]
      ,[BuniessDateTime1]
      ,[BuniessDateTime2]
      ,[OtherColumn1]
      ,[OtherColumn2]
      ,[OtherColumn3]
  FROM [dbo].[BusinessInfoTable]
GO


SELECT top 10 *
  FROM [dbo].[BusinessInfoTable]
GO

3

● 索引中的列

SELECT top 10 
     BuniessStatus1,BuniessStatus2,BuniessDateTime1,BuniessDateTime2
      ,[OtherColumn2]
  FROM [dbo].[BusinessInfoTable]
GO


SELECT top 10 *
  FROM [dbo].[BusinessInfoTable]
GO

4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值