今天在QQ群里有人问到下面问题
提问人用的是MYSQL,不过这个问题让我想起了SQLSERVER的万圣节问题
万圣节问题就是因为更新了非聚集索引之后,非聚集索引迅速排序导致的更新错误问题
当时我只是测试了非聚集索引下面的情况,但是聚集索引下面有没有这种情况呢?
我们修改一下SQLSERVER中的假脱机中的脚本,将建立非聚集索引的那条语句改为建立聚集索引
使用下面SQL脚本建立测试环境
1 USE master 2 GO 3 CREATE DATABASE Spool 4 GO 5 6 USE [Spool] 7 GO 8 9 10 --建表 11 CREATE TABLE Halloween 12 ( 13 ID INT IDENTITY(1, 1), 14 Name VARCHAR(30) , 15 Salary NUMERIC(18, 2), 16 Remark NVARCHAR(3000) 17 ) 18 GO 19 20 --插入数据 21 INSERT INTO [dbo].[Halloween] ( [Name], [Salary], [Remark] ) 22 SELECT '小明',1,replicate('a', 3000) UNION ALL 23 SELECT '小方',2,replicate('a', 3000) 24 25 26 27 28 --建立聚集索引 29 CREATE CLUSTERED INDEX ix_Halloween ON Halloween(Salary ASC,[name]) 30 GO 31 32 --查询 33 SELECT * FROM Halloween 34 GO