私は値が1であるいくつかのフィールドを持つテーブルを持っています。0このテーブルは非常に長い時間外になります。パフォーマンスのために異なるデータ型を使用するのにビットデータ型を使用するのが良いのでしょうか?もちろん、すべてのフィールドにインデックスを付ける必要があります。SQL ServerのBITフィールドの方がintフィールドより高速ですか?
4
A
答えて
2
公式ビットは、特にnullを許可しない場合、最も高速になります。実際には、大きな用途であってもそれは問題ではないかもしれません。しかし、値が0または1のみになる場合は、少し使用しないでください。値が2や-1のような無効なものでいっぱいにならないようにする最善の方法のように聞こえます。
7
パフォーマンスに関する統計情報を提供することはできませんが、データを最もよく表すタイプを常に使用する必要があります。必要なものが1-0であれば、絶対にビットフィールドを使用してください。
あなたのデータベースに与える情報が多くなればなるほど、それは「推測」の権利を得る可能性が高くなります。
0
私が理解しているように、ビット列を格納するにはまだバイトが必要です(ただし、1バイトに8ビットの列を格納できます)。だから、これらのビット列の数が多いと(何くらい)、記憶容量が少なくて済むでしょうか。 Yishaiが言ったように、おそらくパフォーマンスの違いはほとんどありません(ただし、アプリケーションコードのほうが論理的にはうまくいきます)。
この列の2つのオプションが決して変更されないことを100%信頼できると言える場合は、必ずビットを使用してください。しかし、将来的に第3の価値が現れるのを見ることができれば、その日が小さなものを使うようになると、人生は少し楽になるかもしれません。
ちょっと考えましたが、大部分の行が一方または他方の側に向いていない限り、この列でどれくらいのインデックスが役立つかわかりません。おおよそ50/50のディストリビューションでは、実際にインデックスを最新の状態に保ちながら、テーブルを照会する際のヒット数よりも多くのヒットを得るかもしれません。
関連する問題
- 1. なぜintフィールドのjoin Cint(charフィールド)がintよりもintに高速ですか?
- 2. SQL Serverのフィールドはintですか?
- 3. MySQL:varcharフィールドより高速な整数との比較ですか?
- 4. なぜconst intはconst intより高速ですか?
- 5. SQL Serverテーブルの高速ロードが
- 6. SQL Serverでのテンポラリテーブルジョインの高速化
- 7. SQL Server高速化クエリ
- 8. djangoの関連フィールドの高速フィルタ
- 9. SQL Server 2008で必要なフィールドの説明フィールドを取得する方法がわかりません
- 10. PHP&SQL Serverのフィールド名は
- 11. Sql Server 2008の計算フィールド
- 12. SQL Serverの動的フィールド
- 13. SQL Server 2005 - updt_tmstmpフィールドのインデックス
- 14. SQL Serverデフォルトのフィールド値
- 15. 高速クエリでSQL Serverをタイムアウトする
- 16. SQL Serverストアドプロシージャからのフィールドの取得
- 17. mongo結果のデータをフィールド単位で取得するより高速な方法ですか?
- 18. Oracleでの低速クエリ(SQL Serverで高速実行)(相関サブクエリ)
- 19. SQL ServerからCSVへ高速データをエクスポートする方法
- 20. Oracleストアドプロシージャは、Microsoft.NETアプリケーションの行SQLよりも高速ですか?
- 21. エンティティのフレームワークlinqがコードでは速度は遅くなりますが、SQL Server Management Studioでは高速です
- 22. MongoDBでフィールドを変更したり、高速に更新する方法は?
- 23. SQL Serverのフィールドが切り捨てられました
- 24. SQL Serverのdatetime2フィールドにAM/PMがありません
- 25. SQL-Serverの:ストアΩ(オメガ)のnvarcharフィールドの
- 26. 空白のフィールド - SQL Server 2008の
- 27. SQL Serverの計算フィールド - 親レコードのデータ
- 28. Azure SQL Serverテーブルへのフィールドの追加
- 29. SQL Server - フィールドがピボットの場合、別のフィールドで再度ピボットする方法はありますか?それはDBの設計が正しいですか?
- 30. 多くのフィールドのdata_typeをbitからtinyintに変換する
SQL Serverの古いバージョンでこれが当てはまるかどうかは不明ですが、実際には[MSDN](https://msdn.microsoft.com/en-us/library/ms177603.aspx)によれば、「BIT」フィールド真に単一ビットを使用するが、テーブルのすべての「BIT」列は、8ビットの倍数を強制的に使用する必要がある。 – Sushruth