私は実際には8000万行のパーティションテーブルを持っています。
テストの目的で このテーブルをここで作成してパーティション分割しました 。
次のクエリを実行すると:
select * from countries
where visit >= '20110101'
and visit <= '20111231'
あなたが見ることができるように ここでのクエリプラン と下の画像では、それは パーティションの削除 を使用しているので、私は私が正しいことをしていることを知っています。
パーティションは通常、クエリを高速化するためのものではありません ですが、これは管理機能ですが、 大きなテーブルでのクエリを高速化 は可能です。
まず、私が望まないことを述べることから始めます。 テーブルからパーティションを削除 したくありません。
私が欲しいものは?
パーティションからすべてのデータを可能な限り迅速に削除したい:
何かがこれより速いのでしょうか? 一括削除を考慮せずに
BEGIN TRANSACTION T1
DELETE
FROM dbo.countries WITH (TABLOCKX)
WHERE visit >= '20110101'
AND visit <= '20111231'
--COMMIT TRANSACTION T1
SQL Server 2014は、残念ながらパーティションのTRUNCATEをサポートしていません。ドロップして再作成するか、切り替えてください。
より長い議論を見る ここ 。
SQL Server 2016はパーティションの切り捨てをサポートしていますdoes。そのバージョンを使用している場合、それが間違いなく最速のオプションです。