Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server NG)。这也许行得通。让我在其他数据上测试它,看看它是如何运行的。复制只是为了生成测试数据。你能展示一些真实的测试数据吗?从Azure SQL数据仓库中获得良好的性能实际上是通过一个好的散列分发密钥来最小化数据移动。是的,我今天要测试它。我想我被弄糊涂了,_Sql Server_Azure Sql Database_Data Warehouse - Fatal编程技术网

Sql server NG)。这也许行得通。让我在其他数据上测试它,看看它是如何运行的。复制只是为了生成测试数据。你能展示一些真实的测试数据吗?从Azure SQL数据仓库中获得良好的性能实际上是通过一个好的散列分发密钥来最小化数据移动。是的,我今天要测试它。我想我被弄糊涂了,

Sql server NG)。这也许行得通。让我在其他数据上测试它,看看它是如何运行的。复制只是为了生成测试数据。你能展示一些真实的测试数据吗?从Azure SQL数据仓库中获得良好的性能实际上是通过一个好的散列分发密钥来最小化数据移动。是的,我今天要测试它。我想我被弄糊涂了,,sql-server,azure-sql-database,data-warehouse,Sql Server,Azure Sql Database,Data Warehouse,NG)。这也许行得通。让我在其他数据上测试它,看看它是如何运行的。复制只是为了生成测试数据。你能展示一些真实的测试数据吗?从Azure SQL数据仓库中获得良好的性能实际上是通过一个好的散列分发密钥来最小化数据移动。是的,我今天要测试它。我想我被弄糊涂了,为什么要在字段中复制它,而不是像GUID示例那样在行中复制它。我将在10亿行上进行测试,看看结果如何。 DECLARE @delimiter CHAR(1) = '-'; CREATE TABLE dbo.guids_split WITH (


NG)。这也许行得通。让我在其他数据上测试它,看看它是如何运行的。复制只是为了生成测试数据。你能展示一些真实的测试数据吗?从Azure SQL数据仓库中获得良好的性能实际上是通过一个好的散列分发密钥来最小化数据移动。是的,我今天要测试它。我想我被弄糊涂了,为什么要在字段中复制它,而不是像GUID示例那样在行中复制它。我将在10亿行上进行测试,看看结果如何。
DECLARE @delimiter CHAR(1) = '-';

CREATE TABLE dbo.guids_split
WITH
(
    DISTRIBUTION = HASH(xguid),
    HEAP
)
AS
SELECT *
FROM dbo.guids g
    CROSS APPLY STRING_SPLIT ( xguid, @delimiter );
-- Create one million guids
IF OBJECT_ID('dbo.numbers') IS NOT NULL DROP TABLE dbo.numbers
IF OBJECT_ID('dbo.guids_split') IS NOT NULL DROP TABLE dbo.guids_split
IF OBJECT_ID('dbo.guids') IS NOT NULL DROP TABLE dbo.guids
IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp
GO


CREATE TABLE dbo.Numbers (
    Number  INT NOT NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,     --!!TODO try distibuting?
    CLUSTERED INDEX ( Number )
)
GO


DECLARE @UpperLimit INT = 1000000;

;WITH n AS
(
    SELECT
        x = ROW_NUMBER() OVER (ORDER BY s1.[object_id])
    FROM       sys.all_objects AS s1
    CROSS JOIN sys.all_objects AS s2
    CROSS JOIN sys.all_objects AS s3
)
SELECT x
INTO #tmp
FROM n
WHERE x BETWEEN 1 AND @UpperLimit
GO

INSERT INTO dbo.Numbers ( Number )
SELECT x
FROM #tmp
GO


CREATE TABLE dbo.guids (
    rn  INT IDENTITY,
    xguid   CHAR(36) NOT NULL
)
WITH
(
    DISTRIBUTION = HASH(xguid),
    CLUSTERED COLUMNSTORE INDEX
)
GO

INSERT INTO dbo.guids ( xguid )
SELECT NEWID() xguid
FROM dbo.Numbers
GO -- 10    -- scale up 10 to 100, 1,000 etc

ALTER INDEX ALL ON dbo.guids REBUILD 
GO


-- Create the stats
CREATE STATISTICS _st_numbers_number ON dbo.numbers (number);
CREATE STATISTICS _st_guids_rn ON dbo.guids (rn);
CREATE STATISTICS _st_guids_xguid ON dbo.guids (xguid);
GO
-- multi-col stat?
:exit


-- NB The length of the guid; so we don't have to use VARCHAR(MAX)
DECLARE @delimiter VARCHAR(1) = '-';

CREATE TABLE dbo.guids_split
WITH
(
    DISTRIBUTION = HASH(xguid),
    HEAP
)
AS
SELECT
    s.rn,
    n.Number n,
    originalid AS xguid,
    LTRIM( RTRIM( SUBSTRING( s.xguid, n.Number + 1, CHARINDEX( @delimiter, s.xguid, n.Number + 1 ) - n.Number - 1 ) ) ) AS split_value
FROM (
    SELECT
        rn,
        xguid AS originalid,
        CAST( CAST( @delimiter AS VARCHAR(38) ) + CAST( xguid AS VARCHAR(38) ) + CAST( @delimiter AS VARCHAR(38) ) AS VARCHAR(38) ) AS xguid
        FROM dbo.guids
        ) s
    CROSS JOIN dbo.Numbers n
WHERE n.Number < LEN( s.xguid )
  AND SUBSTRING( s.xguid, n.Number, 1 ) = @delimiter;
GO


/*
SELECT TOP 10 * FROM dbo.guids ORDER BY rn;

SELECT *
FROM dbo.guids_split
WHERE rn In ( SELECT TOP 10 rn FROM dbo.guids ORDER BY rn )
ORDER BY 1, 2;
GO

*/