タグ付けされた質問 「varchar」

通常、可変長文字列データ型を指します。

5
varcharとnvarcharの違いを記述する
現在、SQL Server 2012データベースではを使用していますが、これvarcharを変更したいと考えていnvarcharます。そのためのスクリプトを生成しました。 私の質問は、SQL Serverがvarchar列に書き込む方法と列に書き込む方法に違いはありnvarcharますか?私が心配している多くのバックエンド手順があります。 編集: これが役立つかどうかはわかりませんが、列にはインデックス、f / k、またはそれらの制約がありません。

3
固定サイズのフィールドでCHARとVARCHARを使用すると、パフォーマンスにどのような影響がありますか?
MD5ハッシュを格納するインデックス列があります。したがって、列には常に32文字の値が格納されます。何らかの理由で、これはcharではなくvarcharとして作成されました。データベースを移行してcharに変換する手間をかける価値はありますか?これは、InnoDBを使用したMySQL 5.0にあります。


3
Transact-SQLクエリの文字列の前のNプレフィックス
Transact-SQLクエリで文字列の前にNプレフィックスを使用する必要がある場合、教えてください。私はこのようなクエリを使用して結果を取得しないデータベースで作業を開始しました SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%' パターンをに変更するまでN'%а_pattern%'。過去にこのプレフィックスを追加する必要がなかったので、興味があります。a_fieldはと定義されてnvarchar(255)いますが、その理由は他の何かだと思います。

2
MySqlのVARCHARフィールドで可能なINDEX
私は次のようなテーブルを使用して、MySqlデータベースで作業しています。 +--------------+ | table_name | +--------------+ | myField | +--------------+ ...そして、私はこのような多くのクエリを作成する必要があります(リストに5〜10文字列): SELECT myField FROM table_name WHERE myField IN ('something', 'other stuff', 'some other a bit longer'...) 約24.000.000の一意の行があります 1)FULLTEXTまたはにINDEXキーを使用する必要がありますVARCHAR(150)か? 2)文字を150から220または250に増やした場合、大きな違いが生じますか?(それを計算する方法はありますか?) 3)私が言ったように、それらはユニークになるので、myFieldはPRIMARY KEYでなければなりません。すでにVARCHAR INDEX / FULLTEXTであるフィールドにPRIMARY KEYを追加することはまれではありませんか?

4
VARCHAR列に任意の長さ制限を追加する必要がありますか?
PostgreSQLのドキュメントによるとVARCHAR、VARCHAR(n)との間にパフォーマンスの違いはありませんTEXT。 名前または住所列に任意の長さ制限を追加する必要がありますか? 編集:だまされていない: すべての値が36文字の場合、char vs varcharを使用すると、インデックスルックアップは著しく高速になりますか このCHARタイプは過去の遺物であり、パフォーマンスだけでなく、アーウィンのような他の長所と短所も彼の驚くべき答えで述べています。

1
すべての値が36文字の場合、char vs varcharを使用すると、インデックスルックアップは著しく高速になりますか
すべてのテーブルのプライマリキーにハッシュベースの生成されたIDを使用するレガシースキーマ(免責事項!)があります(多数あります)。このようなIDの例は次のとおりです。 922475bb-ad93-43ee-9487-d2671b886479 このアプローチを変更する可能性はありませんが、インデックスアクセスのパフォーマンスは低下します。これが無数にある理由は別として、多くのテーブルのすべてのid値が正確に36文字の長さであるにもかかわらず、列タイプはvarchar(36)でなく 、最適ではないように思われることが1つありchar(36)ます。 固定長に列の型を変更することだろうchar(36)任意の提供の重要なインデックスページなどあたりのエントリの数が非常に少ないの増加を超えて、インデックスのパフォーマンス上の利点? つまり、固定長型を扱う場合、可変長型よりもpostgresの方がはるかに高速ですか? わずかなストレージの節約については言及しないでください-列に変更を加えるために必要な手術と比較しても問題にはなりません。

1
8000文字以降のデータを切り捨てるVarchar(max)フィールド
いくつかのデータを保存するフィールドがあり、フィールドはとして宣言されていvarchar(max)ます。私の理解では、これは2^31 - 1文字を保存する必要がありますが、8000文字を超えるコンテンツを入力すると、残りがカットされます。 すべてのデータが更新ステートメントに含まれていることを確認し、クエリは他のすべての場所で正常に見えますが、データを選択し直すと切り捨てられました。 データをWebサイトに表示するとき、およびSSMSを使用してデータを表示するとき、データは切り捨てられselect content from tableます。 select DATALENGTH (content) from table 8000として返されます。 これを使用してデータを設定しますupdate table set content = 'my long content' where id = 1。コンテンツには多くのHTMLが含まれていますが、問題の原因はわかりません。私がやっていることを見ることができる唯一のことは、これがユーザーが入力したコンテンツ"である''ため、すべてを置き換えることです(私が今やった理由を覚えていない)。 コンテンツ内のすべての単一引用符を削除することで、コンテンツを正しく入力することができたので、データベースではなくデータで何か奇妙なことが起こっていると思います。 varchar(max)フィールドを使用するためにクエリで特別なことをする必要がありますか? 使用:SQL Server 2008(10.50)64ビット。

2
SQL Server 2014でLEN()関数がカーディナリティを過小評価するのはなぜですか?
文字列列と特定の長さの行をチェックする述語を持つテーブルがあります。SQL Server 2014では、チェックする長さに関係なく、1行の推定値が表示されます。実際には数千または数百万の行があり、SQL Serverはこのテーブルをネストされたループの外側に配置することを選択しているため、これは非常に貧弱な計画を生み出しています。 SQL Server 2012で31,622行を見積もる一方で、SQL Server 2014の1.0003のカーディナリティの見積もりについての説明はありますか?良い回避策はありますか? 問題の簡単な複製を次に示します。 -- Create a table with 1MM rows of dummy data CREATE TABLE #customers (cust_nbr VARCHAR(10) NOT NULL) GO INSERT INTO #customers WITH (TABLOCK) (cust_nbr) SELECT TOP 1000000 CONVERT(VARCHAR(10), ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS cust_nbr FROM master..spt_values v1 CROSS …

2
MAXテキストまたはより具体的で小さいタイプの使用
彼らが見たとき、誰かが私が使用して見て、提案されたテーブルを作成するための私のDDLコードをレビューしてたVARCHAR(256)私がすべきことを、私は最初の名前または何のような、かなり小さいことが予想されるテキストのフィールドを常にだけ使用VARCHAR(MAX)し、リンクを使用する理由は何もなく、varchar型(最大)。私はそれを読みましたが、2005年に焦点を当てていたため、日付があり、すべてのテキストフィールドで1行あたり最大2GBを割り当てる可能性を実際に正当化するようには思われませんでした。 パフォーマンス、ストレージなどの観点から、VARCHAR(MAX)最新バージョンのSQL Serverで使用するか、より小さな特定のタイプを使用するかを決定するにはどうすればよいですか?(例:2008、2012、2014)

4
varchar(8000)を設定するとどのような結果になりますか?
varcharはフィールドのサイズに比例してディスク領域を使用するため、たとえばvarchar(8000)SQL Serverで、varcharを常に最大値として定義する必要がない理由はありますか? テーブルを作成するときに、誰かがやっているのを見たらvarchar(100)、あなたは間違っていると言ってはいけませvarchar(8000)んか?

3
varchar(255)またはvarchar(256)?
テーブルを使用する必要がありますvarchar(255)かvarchar(256)?列の長さ、またはメタデータの保存に1バイトが使用されていると聞きました。 この時点でそれはもう重要ですか? 私はインターネット上でいくつかの投稿を見ましたが、それらはOracleとMySQLに適用されます。 Microsoft SQL Server 2016 Enterprise Editionがありますが、この環境にどのように適用されますか? ここで、たとえば、テキストの説明を256ではなく255文字に保つようにクライアントに指示した場合、違いはありますか?私が読んだこと「DBMSは255文字の最大長で、フィールド内のデータの長さを示すために単一バイトを使用することを選択できます。制限が256以上の場合、2バイトが必要になります。」これは本当ですか?

1
Postgresqlを変更する文字のサイズ制限
postgresqlのさまざまなデータタイプのサイズ制限は何ですか?私はどこかで、1から10485760の間character varying(n)でvarchar(n) nなければならないことを見ました。それは本当ですか? 何のために有効なサイズですcharacter(n)、char(n)とtext?

3
VARCHAR列のサイズを小さくすることに意味はありますか?
VARCHAR2Oracleの列のサイズがパフォーマンスに影響するかどうかに関係なく、あちこちでグーグルでレポートが混在しているようです。 VARCHARサイズの問題に少しひねりを加えたいと思います。 (複数行)フリーテキストフィールド(与えられていないあなたは(オラクル)データベースに格納することを名前のような短いもの)、内の任意の点(WRT。パフォーマンスやそれ以外)が存在しない限界いっぱいまでVARCHAR(容量VARCHAR2(4000)Oracleの上に)が、選択は、とにかく98%のケースで十分であるため、1024や512などの小さい値。

2
VARCHARからVARBINARYへの変換
パフォーマンスの傾向を監視し、最適化が必要な領域を特定できるように、実行中の高価なクエリのログとクエリプランをテーブルに保存しています。 ただし、クエリプランが多くのスペースを占有するようになります(各クエリに対してプラン全体を保存しているため)。 したがって、QueryPlanHashとQueryPlanを別のテーブルに抽出することにより、既存のデータを正規化しようとしています。 CREATE TABLE QueryPlans ( QueryPlanHash VARBINARY(25), QueryPlan XML, CONSTRAINT PK_QueryPlans PRIMARY KEY ( QueryPlanHash ) ); query_plan_hashin の定義はsys.dm_exec_query_statsバイナリフィールドであるため(また、定期的に新しいデータを挿入します)、VARBINARY新しいテーブルのデータ型に使用していました。 ただし、以下の挿入は失敗します... INSERT INTO QueryPlans ( QueryPlanHash, QueryPlan ) SELECT queryplanhash, queryplan FROM ( SELECT p.value('(./@QueryPlanHash)[1]', 'varchar(20)') queryplanhash, QueryPlan, ROW_NUMBER() OVER (PARTITION BY p.value('(./@QueryPlanHash)[1]', 'varchar(20)') ORDER BY DateRecorded) rownum FROM …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.