コード
create table ExampleTable
(
Name varchar(500)
CultureCode(5)
)
insert into ExampleTable values('Dit is een test', 'nl-NL')
insert into ExampleTable values('This is a test', 'en-GB')
insert into ExampleTable values('Ceci est un test', 'fr-FR')
insert into ExampleTable values('Dies ist ein Test', 'de-DE')
create procedure GetNameByCultures
(
@CultureCodes varchar(250)
)
as
begin
//Get ExampleTable items according to the culture codes stated in @CultureCodes
end
-例:
CREATE TYPE StringListType AS TABLE
(
[str] varchar(5) NULL
)
MS SQL 2012 V11.0.2100.60 を使用しています
状況
ラベルを抽出するための最良の方法(パフォーマンスに関して)を見つけようとしています。私が考えたが、まだテストしていない方法は次のとおりです。
- 上記のように、ユーザー定義のテーブル タイプを作成します。
利点: データベースでのパフォーマンスがほとんどないことはわかっています。
欠点: ストアド プロシージャに別のパラメーターを追加する必要があります。
- 文字列を文字で分割する関数の作成: ','
欠点: SQL では、"Right"、"Left"、"Like" およびその他の varchar 変換/編集プロパティを使用するのが遅いことを知っています。
利点: 処理をデータベースに保持できます。
現在の状況では、ユーザー定義のテーブル型内で 1 つのカルチャコードのみを送信しています。したがって、UDTT を UDTT に追加できないため、この UDTT にカルチャコードを追加することはできません。私の唯一のオプションは、ストアド プロシージャに別のパラメーターを追加することです。これはあまり問題にはなりませんが、1 つだけにしておくことをお勧めします。
誰かがたまたま別の(より良い?)方法を知っていますか、またはこれらのいずれかを使用する必要がありますか?