国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SqlServer 2005 T-SQL Query 學習筆記(4)

SqlServer 2005 T-SQL Query 學習筆記(4)

2020-06-30 14:58MSSQL教程網 Sql Server

作者他很喜歡建立數字輔助表(即是1-N的數字按順序組成的表),關于如何建立這些輔助表,然后他給了一些例子,這些例子很有代表性。

比如,我要建立一個1,000,000行的數字表:

CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;

INSERT INTO Nums VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END

INSERT INTO dbo.Nums
SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;




這種方式非常巧妙,它并不是一個一個的循環插入,而是一次插入很多行,{1},{2},{3,4},{5,6,7,8}。。。



為什么這樣會快呢?

是因為它節省了跟比較其他可用解決方案進行比較和記錄這些日志的時間。



然后,作者給了一個CTE的遞歸的解決方案:

DECLARE @n AS BIGINT;
SET @n = 1000000;

WITH Nums AS
(
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM Nums WHERE n < @n
)
SELECT n FROM Nums
OPTION(MAXRECURSION 0);--為了移除默認100的遞歸限制


有個更優的CTE的解決方案,就是先生成很多行,然后用ROW_NUMBER進行計算,再選擇ROW_NUMBER這列的值就可以了。

復制代碼 代碼如下:


DECLARE @n AS BIGINT;
SET @n = 1000000;

WITH Base AS
(
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM Base WHERE n < CEILING(SQRT(@n))
),
Expand AS
(
SELECT 1 AS c
FROM Base AS B1, Base AS B2
),
Nums AS
(
SELECT ROW_NUMBER() OVER(ORDER BY c) AS n
FROM Expand
)
SELECT n FROM Nums WHERE n <= @n
OPTION(MAXRECURSION 0);



利用笛卡爾積進行不斷的累加,達到了22n行。

最后,作者給出了一個函數,用于生成這樣的數字表:

復制代碼 代碼如下:


CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
L0 AS(SELECT 1 AS c UNION ALL SELECT 1),
L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),
L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),
L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),
L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),
L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),
Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)
SELECT n FROM Nums WHERE n <= @n;
GO

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 狠狠操狠狠操 | 美女黄网 | 久久久久久久久久久久99 | 日韩二区 | 亚洲精品日韩激情在线电影 | 久久精品国产v日韩v亚洲 | 99综合| 91.成人天堂一区 | 精品日韩一区二区 | 中文久久 | 成年人免费在线看网站 | 国产精品九九九 | 亚洲欧美一级久久精品国产特黄 | 亚洲一区在线视频 | 国产性猛交xxxx免费看久久 | 国产在线观看免费 | 久久99国产精一区二区三区 | 久久久综合网 | 中文字幕第5页 | 日韩中文字幕在线 | 在线免费日韩 | 91网页版| 国产片av| 亚洲在线播放 | av片免费看| 亚洲精品影院在线 | 在线免费日韩 | 亚洲成人影音 | 视频在线一区二区 | 久久国产区 | 日韩欧美一二三区 | 一区二区三区高清视频在线观看 | 中文字幕乱码亚洲精品 | 高清久久 | 亚洲日本乱码一区两区在线观看 | 特级淫片日本高清视频免费 | 国产在线拍揄自揄拍视频 | 精品久久久久久久人人人人传媒 | 久久aⅴ国产欧美74aaa | 午夜国产在线 | 国产精品一区久久久 |