2016-12-09 13 views
0

selectクエリの理由は、external data tableが同じテーブルに対する直接クエリよりも劇的に長いことがわかりません。次のようにSQL Azure - nvarchar(max)列の外部データテーブルのパフォーマンスが低い

テーブルのスキーマがある:

CREATE EXTERNAL TABLE [WebApp].[TestTable] 
(
    [TestTableId] [int] NULL, 
    -- some other int columns 
    [Body] [nvarchar](max) NULL, 
) 
WITH (DATA_SOURCE = [ExternalInterface]) 

external data sourceは、同じリソースグループと場所にデータベースを指します。

合計70,000行のクエリを1秒で完了します。 外部テーブルに対するクエリには最大20分かかります。

選択からbody列を削除すると、合計時間が数秒に短縮されます。だから間違いなく、データの転送量と関係があります。

私の設定で何かがうまくいかないと思います。私は弾力的なクエリエンジンがとても遅いとは思わない。

答えて

0

私はnvarchar(max)列をnvarchar(n)にキャストすることでこれを解決することができました。

SELECT [TestTableId], cast([Body] as nvarchar(3000)) from WebApp.TestTable

また、も行いますターゲット表のBody列の最大長を指定します。

alter table WebApp.TestTable alter column Body nvarchar(3000)

SQLは、ラージオブジェクトとしてnvarchar(max)列のデータを検討し、何らかの理由でLOB列を含む外部表のパフォーマンスはちょうど必死に悪いです...

関連する問題