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

保存するデータのタイプ(文字列、日付、数値など)を指定します。

3
ENUM型と整数型を使用する利点と欠点は?
ランダムなテーブルにstatusという名前の列があるとします。実際の値は、有効または無効になります。 この列のデータ型がint / bool(1または0)であるか、またはand ENUMの値で使用する方が良いでしょうか?長所と短所は何ですか?enableddisabled 有効なステータスが2つだけではなく、4または10以上あるとしますか?必要な値の数が増えると、長所と短所はどちらか一方に左右されますか?

3
UUIDまたはGUIDを主キーとして使用する場合の欠点は何ですか?
分散システムを構築したいと思います。データベースにデータを保存する必要がありますが、一部のテーブルの主キーとしてUUIDまたはGUIDを使用すると便利です。UUID / GUIDは非常に大きく、ほとんどランダムであるため、この設計の欠点だと思います。別の方法は、自動インクリメントのINTまたはLONG​​を使用することです。 テーブルの主キーとしてUUIDまたはGUIDを使用することの欠点は何ですか? おそらく、DBMSとしてDerby / JavaDB(クライアント上)とPostgreSQL(サーバー上)を使用します。

7
SQL Serverでdatetime2に日付と時刻を組み合わせる方法は?
次のコンポーネントを考える DECLARE @D DATE = '2013-10-13' DECLARE @T TIME(7) = '23:59:59.9999999' それらを組み合わせてDATETIME2(7)価値のある結果を生成する最良の方法は何'2013-10-13 23:59:59.9999999'ですか? 動作しないものを以下にリストします。 SELECT @D + @T オペランドデータ型の日付は、追加演算子には無効です。 SELECT CAST(@D AS DATETIME2(7)) + @T オペランドのデータ型datetime2は、add演算子には無効です。 SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D) datediff関数の結果、オーバーフローが発生しました。2つの日付/時刻インスタンスを分離する日付部分の数が多すぎます。精度の低い日付部分でdatediffを使用してみてください。 *を使用して、Azure SQL DatabaseおよびSQL Server 2016でオーバーフローを回避できますDATEDIFF_BIG。 SELECT CAST(@D AS DATETIME) + @T 日付と時刻のデータ型は、add演算子と互換性がありません。 SELECT CAST(@D AS DATETIME) + CAST(@T AS …


7
データベースにメールアドレスを保存するデータ型は何ですか?
254文字の電子メールアドレスが有効であることは理解していますが、調査した実装では、varchar(60)からvarchar(80)または同等のものを使用する傾向があります。例:このSQL Serverの推奨事項では、varchar(80)またはこのOracleの例を使用しています 最大254文字の最大文字数を使用しない理由はありますか?定義上、varcharはデータを保持するために必要なだけのストレージを使用しませんか? 非常に多くの実装で使用可能な254文字よりも少ない文字を使用する、パフォーマンスへの重要な意味/トレードオフがありますか?


3
MD5フィールドに最適なデータ型は何ですか?
読み取りが多いことがわかっているシステムを設計しています(1分あたり数万回の読み取り)。 names一種の中央レジストリとして機能するテーブルがあります。各行には、textフィールドrepresentationとkeyそのMD5ハッシュである一意のフィールドがありますrepresentation。1現在、このテーブルには数千万のレコードがあり、アプリケーションの存続期間中に数十億に達すると予想されています。 テーブルを参照する他の(スキーマとレコード数が非常に異なる)テーブルは多数ありnamesます。これらのテーブルのいずれかのレコードにname_keyは、機能的にはnamesテーブルへの外部キーであるが含まれることが保証されています。 1:ちなみに、ご想像のとおり、このテーブルのレコードは一度書き込まれると不変です。 テーブル以外の特定のnamesテーブルでは、最も一般的なクエリは次のパターンに従います。 SELECT list, of, fields FROM table WHERE name_key IN (md5a, md5b, md5c...); 読み取りパフォーマンスを最適化したいと思います。私が最初にやるべきことは、インデックスのサイズを最小化することだと思います(ただし、間違っていると証明されてもかまいません)。 質問: /に最適なデータ型は何ですかれるkeyとname_key、列?以上 を使用する理由はありますか?または?hex(32)bit(128)BTREEGIN

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

3
ストアドプロシージャの出力パラメーターとしてのテーブル値パラメーター
ストアドプロシージャの出力パラメーターとして使用されるTable-Valuedパラメーターは可能ですか? ここに、私がコードでやりたいこと /*First I create MY type */ CREATE TYPE typ_test AS TABLE ( id int not null ,name varchar(50) not null ,value varchar(50) not null PRIMARY KEY (id) ) GO --Now I want to create stored procedu whic is going to send output type I created, --But it looks …


6
MySQLのSELECT句で整数をブール値にキャストする方法は?
私はここに新しいので、私に親切にしてください。次のシナリオがあります。 簡単にするために、MySQLデータベースのビューに表されるテーブルがたくさんあります。私の問題は、このビューに、ある種のイベントか別のイベント(単純なブール値)かを表す値が必要なことです。 `gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent` 結果はintとして表されるため、Entity Frameworkによって読み取られます。問題は、ブール値の戻り値が本当に必要だということです。 CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` これによりエラーが発生し、MySQL Workbenchで表示されません(「...にエラーがあります」といううっとうしいだけです)。 助けてくれませんか? 私のアプリケーションでそれを解決しようとしましたが、後で他のソフトウェアで使用されるので、私はデータベースでこれを解決することを本当に好みます。

7
長い列はパフォーマンスとディスク使用量にどのように影響しますか?
現在のプロジェクトでは、列を数文字だけ拡張する必要があることが頻繁に発生します。からvarchar(20)へvarchar(30)と上のようにします。 現実には、どれほど重要なのでしょうか?これはどの程度最適化されていますか?通常の「入力」フィールドに100文字、200文字、さらには500文字を許可した場合の影響は何ですか?メールには320文字しか使用できないため、OK-そこには十分な制限があります。しかし、200に設定した場合、それより長い電子メールアドレスは期待できないため、何を得ることができますか。 通常、テーブルには100.000行を超えることはなく、最大20または30個のこのような列があります。 現在SQL Server 2008を使用していますが、さまざまなDBがこの問題をどのように処理するかを知ることは興味深いでしょう。 影響が非常に小さい場合-予想どおり、この長距離パラノイアは実際には必要ではないと、DBAに納得させるために(リンクでバックアップされている?)良い議論を得るのに役立ちます。 そうである場合、私は学ぶためにここにいます:-)

7
IPアドレスを保存する
すべての登録ユーザーのIPアドレスをデータベースに保存する必要があります。このような列に対して何文字を宣言すればよいのでしょうか? IPv6もサポートする必要がありますか?ある場合、IPアドレスの最大長は?

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

5
クエリ、テーブル、またはビューの出力列名とデータ型を返すクエリ
クエリ、テーブル、またはビューのフィールド名とフィールドタイプを返すPostgreSQLクエリまたはコマンドはありますか? たとえば、次のような単純なSELECTクエリに適用されるソリューションは、次のようなSELECT * from personリストを返します。 Column Name | Column Type =========================== First Name | character Last Name | character Age | integer Date of Birth | date 私はinformation_schema以下の回答に記載されているビューを調べましたが、テーブルを非常によくカバーしているようで、ビューもカバーしていると思われますが、まだチェックしていません。 最後は、任意の、しかし有効なSELECTクエリです。たとえば、データベースに対するJOINS、 UNIONSなどが含まれます。組み込みプロシージャ、または有効なQUERYに対してまったく同じを返すことができる他のストアドプロシージャまたはスクリプトはありますか? データを作成し、フォームにクエリを実行するプログラムを開発しています。この情報は、データの検証と返されたデータに対する関数の実行に必要です。

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