閱讀907 返回首頁    go 小米 go 小米6


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




  ● 索引中的列

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


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

2

  1. 聚集索引 創建聚集索引: ```js CREATE CLUSTERED INDEX IDX_3 ON BusinessInfoTable (BuniessCode1)

  ● 顯示所有列
```js
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

最後更新:2017-11-05 16:03:41

  上一篇:go  MaxCompute跨Region數據遷移指導手冊
  下一篇:go  WD西部數據硬盤數據丟失了免費恢複方法