【SQL】大杂烩
--------------------------------- 索引 ---------------------------------
語法: CREATE [索引類型] INDEX 索引名稱 ON 表名(列名) WITH FILLFACTOR = 填充因子值0~100 GO/*實例*/ CREATE NONCLUSTERED INDEX Index_NotePage_ShareState --創建一個非聚集索引 ON NDB.dbo.NotePage(ShareState) --為TEST表的TNAME字段創建索引 WITH FILLFACTOR = 30 --填充因子為30% GO添加索引 IF EXISTS (SELECT name FROM sysindexesWHERE name = 'IX_writtenExam')DROP INDEX testtable.IX_writtenExam /*--筆試列創建非聚集索引:填充因子為%--*/ CREATE NONCLUSTERED INDEX IX_writtenExamON testtable(id)WITH FILLFACTOR= 30 GO查詢測試 /*-----指定按索引IX_writtenExam 查詢----*/ declare @startTime datetime SET @startTime = GETDATE(); SELECT sum(ID) FROM testtable with (INDEX=IX_writtenExam) declare @endtime datetime SET @endtime = GETDATE(); print datediff(ms,@startTime,@endtime)SELECT sum(ID) FROM testtable--------------------------------- 添加數據---------------------------------
SET IDENTITY_INSERT TestTable ON declare @i int set @i=1 while @i<=400000 begininsert into TestTable([id], FirstName, LastName, Country,Note) values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')set @i=@i+1 end SET IDENTITY_INSERT TestTable OFF
?
select語句前加:declare @d datetime set @d=getdate() 并在select語句后加: select [語句執行花費時間(毫秒)]=datediff(ms,@d,getdate())
◆臟讀:一個事務會讀進還沒有被另一個事務提交的數據,所以你會看到一些最后被另一個事務回滾掉的數據。
【正在修改中的數據被讀取】◆ 讀值不可復現:一個事務讀進一條記錄,另一個事務更改了這條記錄并提交完畢,這時候第一個事務再次讀這條記錄時,它已經改變了。
【正在查詢中的數據被修改】
◆ 幻影讀:一個事務用Where子句來檢索一個表的數據,另一個事務插入一條新的記錄,并且符合Where條件,這樣,第一個事務用同一個where條件來檢索數據后,就會多出一條記錄。
【正在查詢中的數據表,又被其它實務加了一行】
語法: CREATE [索引類型] INDEX 索引名稱 ON 表名(列名) WITH FILLFACTOR = 填充因子值0~100 GO/*實例*/ CREATE NONCLUSTERED INDEX Index_NotePage_ShareState --創建一個非聚集索引 ON NDB.dbo.NotePage(ShareState) --為TEST表的TNAME字段創建索引 WITH FILLFACTOR = 30 --填充因子為30% GO添加索引 IF EXISTS (SELECT name FROM sysindexesWHERE name = 'IX_writtenExam')DROP INDEX testtable.IX_writtenExam /*--筆試列創建非聚集索引:填充因子為%--*/ CREATE NONCLUSTERED INDEX IX_writtenExamON testtable(id)WITH FILLFACTOR= 30 GO查詢測試 /*-----指定按索引IX_writtenExam 查詢----*/ declare @startTime datetime SET @startTime = GETDATE(); SELECT sum(ID) FROM testtable with (INDEX=IX_writtenExam) declare @endtime datetime SET @endtime = GETDATE(); print datediff(ms,@startTime,@endtime)SELECT sum(ID) FROM testtable--------------------------------- 添加數據---------------------------------
SET IDENTITY_INSERT TestTable ON declare @i int set @i=1 while @i<=400000 begininsert into TestTable([id], FirstName, LastName, Country,Note) values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')set @i=@i+1 end SET IDENTITY_INSERT TestTable OFF
?
?
--------------------------------- 快速查看執行速度---------------------------------select語句前加:declare @d datetime set @d=getdate() 并在select語句后加: select [語句執行花費時間(毫秒)]=datediff(ms,@d,getdate())
?
INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name)? SELECT @@IDENTITY AS Id
AS后名字是任取的IDENTITY是主鍵的意思,所以一定要有主鍵才可返回
?
◆臟讀:一個事務會讀進還沒有被另一個事務提交的數據,所以你會看到一些最后被另一個事務回滾掉的數據。
【正在修改中的數據被讀取】◆ 讀值不可復現:一個事務讀進一條記錄,另一個事務更改了這條記錄并提交完畢,這時候第一個事務再次讀這條記錄時,它已經改變了。
【正在查詢中的數據被修改】
◆ 幻影讀:一個事務用Where子句來檢索一個表的數據,另一個事務插入一條新的記錄,并且符合Where條件,這樣,第一個事務用同一個where條件來檢索數據后,就會多出一條記錄。
【正在查詢中的數據表,又被其它實務加了一行】
?
轉載于:https://www.cnblogs.com/cpugege/p/4103221.html
總結
- 上一篇: Android——按钮的事件监听
- 下一篇: CodeForces 474.D Flo