lmllouk 2019-04-05
页类型 | 内容 |
Data | 当 text in row 设置为 ON 时,包含除 text、 ntext、image、nvarchar(max)、varchar(max)、varbinary(max) 和 xml 数据之外的所有数据的数据行。 |
Index | 索引条目。 |
Text/Image | 大型对象数据类型:text 、 ntext、image、nvarchar(max)、varchar(max)、varbinary(max) 和 xml 数据。数据行超过 8 KB 时为可变长度数据类型列:varchar 、nvarchar、varbinary 和 sql_variant |
Global Allocation Map、Shared Global Allocation Map | 有关区是否分配的信息。 |
Page Free Space | 有关页分配和页的可用空间的信息。 |
Index Allocation Map | 有关每个分配单元中表或索引所使用的区的信息。 |
Bulk Changed Map | 有关每个分配单元中自最后一条 BACKUP LOG 语句之后的大容量操作所修改的区的信息。 |
Differential Changed Map | 有关每个分配单元中自最后一条 BACKUP DATABASE 语句之后更改的区的信息。 |
代码如下:
//伪代码 node.prev.next=node.next; node.next.prev=node.prev; node.prev=node.next=null;
代码如下:
----------------------------------------------------------- ---- Create T_Pet table in tempdb. ----------------------------------------------------------- USE tempdb CREATE TABLE T_Pet ( animal VARCHAR(20), [name] VARCHAR(20), sex CHAR(1), age INT ) CREATE UNIQUE CLUSTERED INDEX T_PetonAnimal1_ClterIdx ON T_Pet (animal)
代码如下:
DECLARE @i int SET @i=0 WHILE(@i<1000000) BEGIN INSERT INTO T_Pet ( animal, [name], sex, age ) SELECT [dbo].random_string(11) animal, [dbo].random_string(11) [name], 'F' sex, cast(floor(rand()*5) as int) age SET @i=@i+1 END INSERT INTO T_Pet VALUES('Aardark', 'Hello', 'F', 1) INSERT INTO T_Pet VALUES('Cat', 'Kitty', 'F', 2) INSERT INTO T_Pet VALUES('Horse', 'Ma', 'F', 1) INSERT INTO T_Pet VALUES('Turtles', 'SiSi', 'F', 4) INSERT INTO T_Pet VALUES('Dog', 'Tomma', 'F', 2) INSERT INTO T_Pet VALUES('Donkey', 'YoYo', 'F', 3)
代码如下:
SET STATISTICS PROFILE ON SET STATISTICS TIME ON SELECT animal, [name], sex, age FROM T_Pet WHERE animal = 'Ifcey' SET STATISTICS PROFILE OFF SET STATISTICS TIME OFF
代码如下:
----------------------------------------------------------- ---- Create T_Pet table in tempdb with NONCLUSTERED INDEX. ----------------------------------------------------------- USE tempdb CREATE TABLE T_Pet ( animal VARCHAR(20), [name] VARCHAR(20), sex CHAR(1), age INT ) CREATE UNIQUE NONCLUSTERED INDEX T_PetonAnimal1_NonClterIdx ON T_Pet (animal)
代码如下:
SET STATISTICS PROFILE ON SET STATISTICS TIME ON SELECT animal, [name], sex, age FROM T_Pet WHERE animal = 'Cat' SET STATISTICS PROFILE OFF SET STATISTICS TIME OFF
图11查询计划
代码如下:
USE tempdb ---- Creates a sample table. CREATE TABLE employees ( employee_id NUMERIC NOT NULL, first_name VARCHAR(1000) NOT NULL, last_name VARCHAR(900) NOT NULL, date_of_birth DATETIME , phone_number VARCHAR(1000) NOT NULL, junk CHAR(1000) , CONSTRAINT employees_pk PRIMARY KEY NONCLUSTERED (employee_id) );
代码如下:
SELECT * FROM employees WHERE employee_id = 29976
代码如下:
ALTER TABLE employees DROP CONSTRAINT employees_pk ALTER TABLE employees ADD CONSTRAINT employees_pk PRIMARY KEY CLUSTERED (employee_id) GO SELECT * FROM employees WHERE employee_id=29976
代码如下:
----------------------------------------------------------- ---- Index Usefulness sample ----------------------------------------------------------- CREATE TABLE testIndex ( testIndex int identity(1,1) constraint PKtestIndex primary key, bitValue bit, filler char(2000) not null default (replicate('A',2000)) ) CREATE INDEX XtestIndex_bitValue on testIndex(bitValue) GO INSERT INTO testIndex(bitValue) VALUES (0) GO 20000 --runs current batch 20000 times. INSERT INTO testIndex(bitValue) VALUES (1) GO 10 --puts 10 rows into table with value 1
代码如下:
SELECT * FROM testIndex WHERE bitValue = 0
代码如下:
UPDATE STATISTICS dbo.testIndex DBCC SHOW_STATISTICS('dbo.testIndex', 'XtestIndex_bitValue') WITH HISTOGRAM
代码如下:
-- ============================================= -- Author: JKhuang -- Create date: 04/20/2012 -- Description: Create sample for Clustered and -- Nonclustered index. -- ============================================= ----------------------------------------------------------- ---- Create T_Pet table in tempdb with NONCLUSTERED INDEX. ----------------------------------------------------------- USE tempdb CREATE TABLE T_Pet ( animal VARCHAR(20), [name] VARCHAR(20), sex CHAR(1), age INT ) CREATE UNIQUE NONCLUSTERED INDEX T_PetonAnimal1_NonClterIdx ON T_Pet (animal) CREATE UNIQUE CLUSTERED INDEX T_PetonAnimal1_ClterIdx ON T_Pet (animal) ----------------------------------------------------------- ---- Insert data into data table. ----------------------------------------------------------- DECLARE @i int SET @i=0 WHILE(@i<1000000) BEGIN INSERT INTO T_Pet ( animal, [name], sex, age ) SELECT [dbo].random_string(11) animal, [dbo].random_string(11) [name], 'F' sex, cast(floor(rand()*5) as int) age SET @i=@i+1 END INSERT INTO T_Pet VALUES('Aardark', 'Hello', 'F', 1) INSERT INTO T_Pet VALUES('Cat', 'Kitty', 'F', 2) INSERT INTO T_Pet VALUES('Horse', 'Ma', 'F', 1) INSERT INTO T_Pet VALUES('Turtles', 'SiSi', 'F', 4) INSERT INTO T_Pet VALUES('Dog', 'Tomma', 'F', 2) INSERT INTO T_Pet VALUES('Donkey', 'YoYo', 'F', 3) SET STATISTICS PROFILE ON SET STATISTICS TIME ON SELECT animal, [name], sex, age FROM T_Pet WHERE animal = 'Cat' SET STATISTICS PROFILE OFF SET STATISTICS TIME OFF ----------------------------------------------------------- ---- Create employees table in tempdb. ----------------------------------------------------------- CREATE TABLE employees ( employee_id NUMERIC NOT NULL, first_name VARCHAR(1000) NOT NULL, last_name VARCHAR(900) NOT NULL, date_of_birth DATETIME , phone_number VARCHAR(1000) NOT NULL, junk CHAR(1000) , --PK constraint defaults to clustered CONSTRAINT employees_pk PRIMARY KEY (employee_id) ); GO ----------------------------------------------------------- ---- Insert data into data table. ----------------------------------------------------------- CREATE VIEW rand_helper AS SELECT RND=RAND(); GO ---- Generates random string function. CREATE FUNCTION random_string (@maxlen int) RETURNS VARCHAR(255) AS BEGIN DECLARE @rv VARCHAR(255) DECLARE @loop int DECLARE @len int SET @len = (SELECT CAST(rnd * (@maxlen-3) AS INT) +3 FROM rand_helper) SET @rv = '' SET @loop = 0 WHILE @loop < @len BEGIN SET @rv = @rv + CHAR(CAST((SELECT rnd FROM rand_helper) * 26 AS INT )+97) IF @loop = 0 BEGIN SET @rv = UPPER(@rv) END SET @loop = @loop +1; END RETURN @rv END GO ---- Generates random date function. CREATE FUNCTION random_date (@mindaysago int, @maxdaysago int) RETURNS VARCHAR(255) AS BEGIN DECLARE @rv datetime SET @rv = (SELECT GetDate() - rnd * (@maxdaysago-@mindaysago) - @mindaysago FROM rand_helper) RETURN @rv END GO ---- Generates random int function. CREATE FUNCTION random_int (@min int, @max int) RETURNS INT AS BEGIN DECLARE @rv INT SET @rv = (SELECT rnd * (@max) + @min FROM rand_helper) RETURN @rv END GO ---- Inserts data into employees table. WITH generator (n) as ( select 1 union all select n + 1 from generator where N < 30000 ) INSERT INTO employees (employee_id , first_name, last_name , date_of_birth, phone_number, junk) select n employee_id , [dbo].random_string(11) first_name , [dbo].random_string(11) last_name , [dbo].random_date(20*365, 60*365) dob , 'N/A' phone , 'junk' junk from generator OPTION (MAXRECURSION 30000) ----------------------------------------------------------- ---- Index Usefulness sample ----------------------------------------------------------- CREATE TABLE testIndex ( testIndex int identity(1,1) constraint PKtestIndex primary key, bitValue bit, filler char(2000) not null default (replicate('A',2000)) ) CREATE INDEX XtestIndex_bitValue on testIndex(bitValue) GO INSERT INTO testIndex(bitValue) VALUES (0) GO 20000 --runs current batch 20000 times. INSERT INTO testIndex(bitValue) VALUES (1) GO 10 --puts 10 rows into table with value 1 SELECT filler FROM testIndex WHERE bitValue = 1 UPDATE STATISTICS dbo.testIndex DBCC SHOW_STATISTICS('dbo.testIndex', 'XtestIndex_bitValue') WITH HISTOGRAM