이젠 아니야. 미안해, 이렇게 늦게 응답하는 등 기존 게시물로의 I& # 39 m, 그래, 나는 가장 인기 있는 오토메이티드 목격하고서야 했다 때문에 (당시 14 개의 다른 방법을 통해 반복 스테 오토메이티드 https://partner. microsoft.) 이 마음이, 흠. 기껏해야 성능 도전했다.
첫째, 14 개의 다른 솔루션뀉뀉뀉뀉 정상입니다 있었어요새롭게 다른 만드는 방법을 사용한 기사 한 표 즉석에서 이 글에서 지적한 대로 탤리를 번호 / 하지만, 또한 매우 중요한 쿼트에 a # 39 의 there& 스레드할 들었다.
>. " 대한 제안, 효율성 및
>. 성능 종종 주관적인 것이다.
>. 어떻게 기술입니까 질의입니다 상관없이
>. 사용하는 실제 구현
>. 의 효율성을 결합할지 질의입니다.
>. 따라서 의존하지 않고
>. 바이어스됨 지침, 것이 중요합니다
>. 쿼리하고 테스트하려면 확인할 수 있는
>. 어느쪽이야 향상합니다 better.".
아이러니하게도 이 많이 들어 있으며, 그 주관적인 명령문입니다 " 바이어스됨 guidelines". 재귀 스테 " 등 여러 efficiently&quo , , 열거합니다 생성할 수 있으며, 이는 꽤 효과적인 방법을 사용하여 및 " , * from a while 루프를 통해 글을 이치크 Ben-Gen" 뉴스그룹 (I& 게시하기를 비교를 위해, 그는 그냥 # 39 m 합니다 어떤 목적). 월요일 c& # 39, 여러분. 그냥 좋은 이름을 거론하며 Itzik& # 39 의 일부) 를 유발할 수 있는 실제 사용 케이블링의 진흙땅 끔찍한 메서드입니다. 저자는 practice what %hskb), 그는 설교 및 성능 테스트를 할 때는 먼저 잘못된 명령문입니다 특히 침묵이군 터무니없이 작은 어떻게해야합니다 등 모든 스칼리브릴리티.
실제로 어떤 생각을 하고 있는 몇 가지 테스트 코드를 만들기 전에 모든 사람을, 아니,, 주관적 청구용 의심하였더라 높여줍니까 " likes" here& # 39 의 일부 코드를 통해 자신의 테스트 할 수 있습니다. # 39 에서 설치 및 실행, re you& 프로필러 스피드 대한 테스트를 위한 체크아웃합니다 구하겠죠 just do a # 39 " Search& n& # 39, Replace";; 1 000 000 단축시킵니다 수 " favorite"; 번호를 참조).
--===== Test for 1000000 rows ==================================
GO
--===== Traditional RECURSIVE CTE method
WITH Tally (N) AS
(
SELECT 1 UNION ALL
SELECT 1 + N FROM Tally WHERE N < 1000000
)
SELECT N
INTO #Tally1
FROM Tally
OPTION (MAXRECURSION 0);
GO
--===== Traditional WHILE LOOP method
CREATE TABLE #Tally2 (N INT);
SET NOCOUNT ON;
DECLARE @Index INT;
SET @Index = 1;
WHILE @Index
>. 이에 대해 효율성 및 제안
>. 성능 종종 주관적인 것이다.
>. 어떻게 기술입니까 질의입니다 상관없이
>. 사용하는 실제 구현
>. 의 효율성을 결합할지 질의입니다.
>. 따라서 의존하지 않고
>. 바이어스됨 지침, 것이 중요합니다
>. 쿼리하고 테스트하려면 확인할 수 있는
>. 어느쪽이야 향상합니다 좋습니다.
개인적으로 좋아했잖아:
WITH Nbrs ( n ) AS (
SELECT 1 UNION ALL
SELECT 1 + n FROM Nbrs WHERE n < 500 )
SELECT n FROM Nbrs
OPTION ( MAXRECURSION 500 )
CREATE VIEW dbo.Numbers
WITH SCHEMABINDING
AS
WITH Int1(z) AS (SELECT 0 UNION ALL SELECT 0)
, Int2(z) AS (SELECT 0 FROM Int1 a CROSS JOIN Int1 b)
, Int4(z) AS (SELECT 0 FROM Int2 a CROSS JOIN Int2 b)
, Int8(z) AS (SELECT 0 FROM Int4 a CROSS JOIN Int4 b)
, Int16(z) AS (SELECT 0 FROM Int8 a CROSS JOIN Int8 b)
, Int32(z) AS (SELECT TOP 2147483647 0 FROM Int16 a CROSS JOIN Int16 b)
SELECT ROW_NUMBER() OVER (ORDER BY z) AS n
FROM Int32
GO
Sql server 2016년 을 사용하여 테이블을 생성하는 데 사용할 수 있습니다 '+' 숫자 '오픈제슨':
-- range from 0 to @max - 1
DECLARE @max INT = 40000;
SELECT rn = CAST([key] AS INT)
FROM OPENJSON(CONCAT('[1', REPLICATE(CAST(',1' AS VARCHAR(MAX)),@max-1),']'));
39 의 제프 Moden& 오토메이티드 아주 좋다. 하지만 내가 찾을 수 있는 방법을 않으면 실패할 Postgres 작업자쪽에서 이치크 분리하십시오 E32 행일.
내가 조금 빠름 postgres (40ms vs 100ms) 는 here 에 다른 방법으로 postgres 맞게 적용되었다.
WITH
E00 (N) AS (
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ),
E01 (N) AS (SELECT a.N FROM E00 a CROSS JOIN E00 b),
E02 (N) AS (SELECT a.N FROM E01 a CROSS JOIN E01 b ),
E03 (N) AS (SELECT a.N FROM E02 a CROSS JOIN E02 b
LIMIT 11000 -- end record 11,000 good for 30 yrs dates
), -- max is 100,000,000, starts slowing e.g. 1 million 1.5 secs, 2 mil 2.5 secs, 3 mill 4 secs
Tally (N) as (SELECT row_number() OVER (ORDER BY a.N) FROM E03 a)
SELECT N
FROM Tally
As I am SQL Server 의 세계, 더 나은 방법으로 숨길까요 Postgres 가질 수 있는 테이블을 누락했습니다 탤리를 있는 플랫폼. 정수 ()? 시퀀스 ()?
나중에, & # 39 와 같은 I& 여전히 큰 기여를 약간 다른 # 39 traditional& # 39;;; d 스테 (언약보다는 내려받습니다 볼륨입니다 터치 베이스 표를 행):
--===== Hans CROSS JOINED CTE method
WITH Numbers_CTE (Digit)
AS
(SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9)
SELECT HundredThousand.Digit * 100000 + TenThousand.Digit * 10000 + Thousand.Digit * 1000 + Hundred.Digit * 100 + Ten.Digit * 10 + One.Digit AS Number
INTO #Tally5
FROM Numbers_CTE AS One CROSS JOIN Numbers_CTE AS Ten CROSS JOIN Numbers_CTE AS Hundred CROSS JOIN Numbers_CTE AS Thousand CROSS JOIN Numbers_CTE AS TenThousand CROSS JOIN Numbers_CTE AS HundredThousand
39 의 스테 않은 것이 그 후 이 스테 향상합니다 더 판독합니다 Itzik& 전통표기 스테.
그러나 다음 다른 queries.* 일관되게 향상합니다 덜 쓰기
아시다시피 훨씬 비싼 어졌다면 판독합니다 일관성 있는 쓰기뿐만 적지 않다.
이 기간 따라 수에 따라 크게 코어 (맥스도프) 이지만, on my 8core 지속적으로 감소 (기간 (ms) 가 빨리 다음 다른 질의입니다.
나는 사용:
Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 (Build 9600: )
windows Server 2012년 R2 에, 32 GB, 제온® X3450 @2.67Ghz, 4 개의 httechnology 활성화되었습니다.
이젠 아니야. 미안해, 이렇게 늦게 응답하는 등 기존 게시물로의 I& # 39 m, 그래, 나는 가장 인기 있는 오토메이티드 목격하고서야 했다 때문에 (당시 14 개의 다른 방법을 통해 반복 스테 오토메이티드 https://partner. microsoft.) 이 마음이, 흠. 기껏해야 성능 도전했다.
첫째, 14 개의 다른 솔루션뀉뀉뀉뀉 정상입니다 있었어요새롭게 다른 만드는 방법을 사용한 기사 한 표 즉석에서 이 글에서 지적한 대로 탤리를 번호 / 하지만, 또한 매우 중요한 쿼트에 a # 39 의 there& 스레드할 들었다.
>. " 대한 제안, 효율성 및 >. 성능 종종 주관적인 것이다. >. 어떻게 기술입니까 질의입니다 상관없이 >. 사용하는 실제 구현 >. 의 효율성을 결합할지 질의입니다. >. 따라서 의존하지 않고 >. 바이어스됨 지침, 것이 중요합니다 >. 쿼리하고 테스트하려면 확인할 수 있는 >. 어느쪽이야 향상합니다 better.".
아이러니하게도 이 많이 들어 있으며, 그 주관적인 명령문입니다 " 바이어스됨 guidelines". 재귀 스테 " 등 여러 efficiently&quo , , 열거합니다 생성할 수 있으며, 이는 꽤 효과적인 방법을 사용하여 및 " , * from a while 루프를 통해 글을 이치크 Ben-Gen" 뉴스그룹 (I& 게시하기를 비교를 위해, 그는 그냥 # 39 m 합니다 어떤 목적). 월요일 c& # 39, 여러분. 그냥 좋은 이름을 거론하며 Itzik& # 39 의 일부) 를 유발할 수 있는 실제 사용 케이블링의 진흙땅 끔찍한 메서드입니다. 저자는 practice what %hskb), 그는 설교 및 성능 테스트를 할 때는 먼저 잘못된 명령문입니다 특히 침묵이군 터무니없이 작은 어떻게해야합니다 등 모든 스칼리브릴리티.
실제로 어떤 생각을 하고 있는 몇 가지 테스트 코드를 만들기 전에 모든 사람을, 아니,, 주관적 청구용 의심하였더라 높여줍니까 " likes" here& # 39 의 일부 코드를 통해 자신의 테스트 할 수 있습니다. # 39 에서 설치 및 실행, re you& 프로필러 스피드 대한 테스트를 위한 체크아웃합니다 구하겠죠 just do a # 39 " Search& n& # 39, Replace";; 1 000 000 단축시킵니다 수 " favorite"; 번호를 참조).
대신 테이블 사용하는 것이 가장 적합한 함수는 함수. 기능 추가 CPU 가 사용하는 데이터 값이 반환될 경우 만듭다 로드, 특히 값이 반환될 빽이라는 매우 큰 약점이다.
이 문서 에 논의를 통해 14 개의 다른 해결책을 각. 중요한 점은.
>. 이에 대해 효율성 및 제안 >. 성능 종종 주관적인 것이다. >. 어떻게 기술입니까 질의입니다 상관없이 >. 사용하는 실제 구현 >. 의 효율성을 결합할지 질의입니다. >. 따라서 의존하지 않고 >. 바이어스됨 지침, 것이 중요합니다 >. 쿼리하고 테스트하려면 확인할 수 있는 >. 어느쪽이야 향상합니다 좋습니다.
개인적으로 좋아했잖아:
이 관점은 int '초고속' 에 모든 양수 값.
Sql server 2016년 을 사용하여 테이블을 생성하는 데 사용할 수 있습니다 '+' 숫자 '오픈제슨':
<, kbd>, ['리베디모'] (https://data.stackexchange.com/stackoverflow/query/481961) < /kbd>;
< hr>; Idea 에서 발췌 [어떻게 사용할 수 있는 일련의 번호를 오픈제슨 발령합니다?] (https://blogs.msdn.microsoft.com/sqlserverstorageengine/2015/11/03/generate-serie-of-numbers-in-sql-server-2016-using-openjson/)
편집: # 39 의 주석문입니다 Conrad& 볼 수 있습니다.
39 의 제프 Moden& 오토메이티드 아주 좋다. 하지만 내가 찾을 수 있는 방법을 않으면 실패할 Postgres 작업자쪽에서 이치크 분리하십시오 E32 행일.
내가 조금 빠름 postgres (40ms vs 100ms) 는 here 에 다른 방법으로 postgres 맞게 적용되었다.
As I am SQL Server 의 세계, 더 나은 방법으로 숨길까요 Postgres 가질 수 있는 테이블을 누락했습니다 탤리를 있는 플랫폼. 정수 ()? 시퀀스 ()?
나중에, & # 39 와 같은 I& 여전히 큰 기여를 약간 다른 # 39 traditional& # 39;;; d 스테 (언약보다는 내려받습니다 볼륨입니다 터치 베이스 표를 행):
39 의 스테 않은 것이 그 후 이 스테 향상합니다 더 판독합니다 Itzik& 전통표기 스테.
이 기간 따라 수에 따라 크게 코어 (맥스도프) 이지만, on my 8core 지속적으로 감소 (기간 (ms) 가 빨리 다음 다른 질의입니다.
나는 사용:
windows Server 2012년 R2 에, 32 GB, 제온® X3450 @2.67Ghz, 4 개의 httechnology 활성화되었습니다.