SQL Server の FILESTREAM データ型によるパフォーマンス向上
SQL Serverテーブルに大量のテキストを格納する最適な方法
VARCHAR(MAX) データ型
- 最大2GBまでのテキストを格納可能
- シンプルで使いやすい
- インデックス作成ができないため、全文検索が遅い
VARCHAR(MAX)
と同様だが、Unicode文字に対応
TEXT データ型
- 古いデータ型で、
VARCHAR(MAX)
よりも非効率
FILESTREAM データ型
- テキストをBLOBとして格納
- パフォーマンスが向上
- 最大2GBまでのバイナリデータを格納可能
- 画像や動画などのバイナリデータを格納する場合に有効
外部テーブル
- テキストデータを別のファイルに格納
- テーブルサイズを削減
- ファイルシステムのアクセス権限を設定可能
最適な方法を選択するには
- 格納するテキストの量
- テキストの種類(Unicodeか否か)
- 全文検索が必要かどうか
などを考慮する必要があります。
- SQL Server Management Studio (SSMS) を使用して、テーブルを作成および編集できます。
- SQL Server Profiler を使用して、データベースへのアクセスを監視できます。
CREATE TABLE MyTable (
ID INT NOT NULL PRIMARY KEY,
TextData VARCHAR(MAX) NOT NULL
);
CREATE TABLE MyTable (
ID INT NOT NULL PRIMARY KEY,
TextData NVARCHAR(MAX) NOT NULL
);
CREATE TABLE MyTable (
ID INT NOT NULL PRIMARY KEY,
TextData TEXT NOT NULL
);
CREATE TABLE MyTable (
ID INT NOT NULL PRIMARY KEY,
TextData nTEXT NOT NULL
);
CREATE TABLE MyTable (
ID INT NOT NULL PRIMARY KEY,
TextData FILESTREAM NOT NULL
);
CREATE TABLE MyTable (
ID INT NOT NULL PRIMARY KEY,
BinaryData VARBINARY(MAX) NOT NULL
);
CREATE TABLE MyTable (
ID INT NOT NULL PRIMARY KEY,
TextDataPath VARCHAR(MAX) NOT NULL
);
CREATE EXTERNAL TABLE MyExternalTable (
TextData VARCHAR(MAX) NOT NULL
)
WITH (
LOCATION = 'C:\MyData\MyExternalTable.txt',
DATA_FORMAT = 'Text'
);
分割
テキストデータを複数のテーブルに分割することで、パフォーマンスを向上させることができます。
クラウドストレージ
大量のテキストデータをクラウドストレージに格納することで、コストを削減できます。
NoSQL データベース
NoSQLデータベースは、大量のテキストデータを格納するのに適している場合があります。
sql-server