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

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

2
必要以上に大きい列サイズを使用する
他の人とSQL Serverデータベースを作成しています。テーブルの1つは小さく(6行)、データはおそらく一定のままです。新しい行が追加される可能性はほとんどありません。テーブルは次のようになります。 CREATE TABLE someTable ( id int primary key identity(1,1) not null, name varchar(128) not null unique ); INSERT INTO someTable values ('alice', 'bob something', 'charles can dance', 'dugan was here'); 私はそのname列の文字の長さを調べていますが、その値はおそらく32文字を超えることは決してなく、おそらく24文字を超えることはないと思います。この列を変更する利点はありますか、たとえば、varchar(32)? また、デフォルトの列サイズを4、8、32などの倍数に維持することには利点がありますか?

5
日時文字列に1ミリ秒を追加する方法は?
選択に基づいて、次のようにx行を返すことができます。 1 2019-07-23 10:14:04.000 1 2019-07-23 10:14:11.000 2 2019-07-23 10:45:32.000 1 2019-07-23 10:45:33.000 ミリ秒はすべて0です。 1ミリ秒ごとに1を追加する方法があるので、選択は次のようになります。 1 2019-07-23 10:14:04.001 1 2019-07-23 10:14:11.002 2 2019-07-23 10:45:32.003 1 2019-07-23 10:45:33.004 カーソルを作成しようとしていますが、成功していません。 これは、必要な結果を取得するためのクエリです。 select top 10 ModifiedOn from [SCHEMA].[dbo].[TABLE] where FIELD between '2019-07-23 00:00' and '2019-07-23 23:59' 81kの値があります。フィールドはDATETIMEです。

2
varchar列のサイズを小さくすると、データベースファイルにどのような影響がありますか?
データベースにはVARCHAR(MAX)、a VARCHAR(500)(またはmaxよりもはるかに小さいもの)で十分な列を持つテーブルがいくつかあります。当然、これらをクリーンアップし、サイズをより合理的なレベルに下げたいと思います。これを行うための「方法」は理解しています:私の質問は、これらの列を変更すると、ディスク上のページとエクステントに何が影響するのでしょうか?(列を拡大すると何が起こるかについて多くの情報がありますが、列を縮小すると何が起こるかに関する情報を見つけるのが困難です。) 一部のテーブルは行数が非常に少ないため、変更のコストについては心配していませんが、一部は非常に大きく、潜在的に再編成されて多くのブロッキング/ダウンタイムが発生することを心配しています。実際には、メンテナンスウィンドウを見積もる方法が必要です。一般に、この場合のデータベースエンジンの動作をよりよく理解したいと思います。 前もって感謝します! 編集: 見ているテーブルは20個ありますが、行カウントが1,000を超えるテーブルは半分しかありません。最大のものにはほぼ100万行あります。最悪の違反者は、350,000行と4 VARCHAR(MAX)列からなるテーブルで、このVARCHAR(500)レベルまで縮小できます。

1
varchar(n)のオーバーヘッドは何ですか?
型に関するPostgres docからこのフラグメントの意味を尋ねたいと思いましたvarchar(n)。 短い文字列(最大126バイト)のストレージ要件は、1バイトに実際の文字列を加えたもので、文字の場合はスペースの埋め込みが含まれます。長い文字列には、1ではなく4バイトのオーバーヘッドがあります。 私にはvarchar(255)フィールドがあると仮定しましょう。そして今、次のステートメント: このフィールドが10バイトの文字列を保持する場合、オーバーヘッドは1バイトです。したがって、文字列は11バイトを使用します。 フィールドに140バイトを使用した文字列が含まれている場合、オーバーヘッドは4バイトです。したがって、文字列は144バイトを使用します。 上記のステートメントは真実ですか?ここで誰かが私と同じようにドキュメントを理解していますが、ここでは誰かがオーバーヘッドが常に4バイトであると述べていますか?

4
CHARとVARCHAR(Postgres)のインデックスパフォーマンス
この答え(/programming/517579/strings-as-primary-keys-in-sql-database)で、1つの発言が目を引きました: また、インデックスの比較を行うとき、CHARとVARCHARの間に非常に大きな違いがあることが多いことに留意してください これはPostgresに適用されますか? OracleのページCHARは多かれ少なかれエイリアスであるVARCHARと主張しているため、インデックスのパフォーマンスは同じですが、Postgresで決定的なものは何も見つかりませんでした。

2
SQL ServerのVARCHAR列幅
Webを検索すると、過度に広いVARCHAR列を指定したときにパフォーマンスに影響があるかどうか、たとえばVARCHAR(30)がおそらくする場合のVARCHAR(255)について、矛盾したアドバイスが見つかりました。 行全体が8060バイトを超えると、パフォーマンスが低下するという合意に一貫して同意します。それ以外は、意見の相違があります。 その主張は本当The default is SET ANSI PADDING ON = potential for lots of trailing spacesですか?行の合計幅が8060未満である限り、VARCHAR列のサイズを大きくすることで実際のパフォーマンスの懸念はありますか? 列幅が重要であることの証拠 The same goes for CHAR and VARCHAR data types. Don’t specify more characters in character columns that you need. http://www.sql-server-performance.com/2007/datatypes/ Length is a constraint on the data (like CHECK, FK, NULL etc) Performance …

2
varchar(max)8000列と、8000文字以上を格納できる理由を理解する
この Microsoftドキュメントから、+ nは文字列の長さを定義し、1〜8,000の値にできます。maxは、最大ストレージサイズが2 ^ 31-1バイト(2 GB)であることを示します。ストレージサイズは、入力されたデータの実際の長さ+ 2バイトです。 これを理解してください。 varcharの最大文字数8000はのよう2GBです。これは、データの価値よりもはるかに少ないです。 varchar(max)特定のテーブルのこの列には、len(mycolumn)100,000を超えるレコードがあることがわかります。したがって8000、varchar(max)列よりも文字数が多いことがわかります。 質問1:8000キャラクターはどのように登場し、どこで注意すべきですか? 質問2:この列に対する.netデータリーダークエリは、常に100 000+文字の完全な結果を返しますか?

1
VARCHAR(MAX)列がインデックスに含まれている場合、値全体が常にインデックスページに格納されますか?
私はこの質問に触発されて、好奇心からこれを求めています。 VARCHAR(MAX)8000バイトを超える値は行に格納されず、個別のLOBページに格納されることがわかっています。その後、そのような値を持つ行を取得するには、2つ以上の論理IO操作が必要です(基本的に、理論的に必要な場合よりも1つ多い)。 リンクされた質問に示されているように、VARCHAR(MAX)列をINCLUDEd として一意のインデックスに追加できます。この列の長さが8000バイトを超える場合、そのような値は引き続きインデックスリーフページに「インライン」で格納されますか、それともLOBページに移動されますか?

1
SQL Serverでのvarcharのサイジングに関する現在のベストプラクティスは何ですか?
ストレージとパフォーマンスの両方の観点から、varchar列の大きさを決定する最良の方法を理解しようとしています。 パフォーマンス 私の研究から、それはそうですvarchar(max)は、本当に必要な場合にのみ使用してください。つまり、列が8000文字以上を収容する必要がある場合、1つの理由はインデックス作成の欠如です(ただし、一般にvarcharフィールドでのインデックス作成には少し疑いがあります。ただし、DBの原則はかなり新しいので、それが根拠がないかもしれません。 )および圧縮(より多くのストレージの問題)。実際、クエリは可能な最大サイズを考慮しなければならないため、一般的に人々はvarchar(n).... oversizingを行うときに必要なものだけを使用することを推奨しているようです。しかし、エンジンはデータの実際の平均サイズの推定値として、示されたサイズの半分を使用することも述べられています。これは、データから平均サイズを決定し、それを2倍にし、それをnとして使用する必要があることを意味します。ただし、変動性が非常に低いがゼロではないデータの場合、これは、最大サイズの最大2倍のサイズ変更を意味します。洞察をいただければ幸いです。 ストレージ 実際のストレージは実際のデータに制限されていることを念頭に置いて、行内ストレージと行外ストレージのしくみについて読んだ後、nの選択はストレージにほとんどまたはまったく影響がないように思えます(それがすべてを保持するのに十分な大きさであることを確認してください)。varchar(max)を使用しても、ストレージに影響はありません。代わりに、可能であれば、各データ行の実際のサイズを〜8000バイトに制限することが目標になる場合があります。それは物事を正確に読んでいますか? コンテキスト 一部の顧客データは少し変動するため、通常、必要な列よりも少し幅を広く(たとえば15〜20%大きく)します。他に特別な考慮事項があるかどうか疑問に思っていました。たとえば、一緒に仕事をしている人から、2 ^ n-1サイズを使用するように言われました(ただし、それを証明するものは見つかりませんでした。 最初のテーブル作成について話している。新しいテーブルの送信を開始し、サンプルデータ(または最初の本番データセットのみ)を送信することをお客様から言われます。これを見て、データを保持するためのテーブルを作成します。将来のインポートとサンプルの内容を処理できるように、テーブルを作成します。ただし、特定の行は長くなるようにバインドされているため、それらをパディングします。 問題はどれくらいか、そして技術的なガイドラインはありますか?

7
MySQLインデックス作成VarChar
blogentriesデータベースのインデックスを作成してパフォーマンスを向上させようとしていますが、問題が見つかりました。 ここに構造があります: CREATE TABLE IF NOT EXISTS `blogentries` ( `id_id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `title_id` varchar(100) COLLATE latin1_german2_ci NOT NULL, `entry_id` varchar(5000) COLLATE latin1_german2_ci NOT NULL, `date_id` int(11) NOT NULL, PRIMARY KEY (`id_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=271; 次のようなクエリは、インデックスを適切に使用します。 EXPLAIN SELECT id_id,title_id FROM blogentries ORDER …
10 mysql  varchar 

2
クラスタ化インデックスが使用されている場合、「行外」フィールドは読み取られますか?
VARCHAR(MAX)/NVARCHAR(MAX)列を使用するとデータが格納されることを知っています。out of the rowデータ行には、「大きな値」が格納されている別の場所へのポインターがあります。 次の質問があります。 各フィールドは格納されout of the rowていmaxますか、それとも1つだけですか? clustered indexレコード全体を読み取るためにテーブルのを使用している場合、行から格納されているフィールドも読み取られますか? VARCHAR(MAX)またはNVARCHAR(MAX)は「大きな値の型」と見なされます。大きな値型は通常「行外」に格納されます。つまり...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.