Ich habe Tabelle mit einigen Feldern, dass der Wert 1 0 sein wird. Diese Tabellen werden extrem große Überstunden sein. Ist es gut, den Bit-Datentyp zu verwenden, oder ist es besser, einen anderen Typ für die Leistung zu verwenden? Natürlich sollten alle Felder indiziert sein.Ist das BIT-Feld in SQL Server schneller als das Feld int?
Antwort
Offiziell Bit wird am schnellsten sein, vor allem, wenn Sie Nullen nicht zulassen. In der Praxis spielt dies selbst bei großen Anwendungen keine Rolle. Aber wenn der Wert nur 0 oder 1 ist, warum nicht ein bisschen? Klingt wie der beste Weg, um sicherzustellen, dass der Wert nicht mit ungültigen Sachen gefüllt wird, wie 2 oder -1.
Ich kann Ihnen keine Statistiken zur Leistung geben, jedoch sollten Sie immer den Typ verwenden, der Ihre Daten am besten repräsentiert. Wenn alles, was Sie wollen, 1-0 ist, sollten Sie unbedingt das Bitfeld verwenden.
Je mehr Informationen Sie Ihrer Datenbank geben können, desto wahrscheinlicher ist es, dass sie richtig geraten.
Wie ich es verstehe, benötigen Sie noch ein Byte, um eine Bitspalte zu speichern (aber Sie können 8-Bit-Spalten in einem einzigen Byte speichern). Wenn Sie also eine große Anzahl (wie viele?) Dieser Bitspalten haben, können Sie ein wenig Speicherplatz sparen. Wie Yishai sagte, wird es wahrscheinlich keinen großen Unterschied in der Performance machen (obwohl ein bisschen besser zu einem booleschen Code in Anwendung übersetzt werden wird).
Wenn Sie mit 100% sicher, dass die beiden Optionen für diese Spalte wird nie ändern Sie dann angeben, können mit allen Mitteln das Bit verwenden. Aber wenn Sie einen dritten Wert in der Zukunft sehen können, könnte es das Leben ein wenig leichter machen, wenn dieser Tag kommt, um ein Tinyint zu verwenden.
Nur ein Gedanke, aber ich bin mir nicht sicher, wie viel Gutes ein Index, den Sie auf dieser Spalte entweder tun, es sei denn, Sie die überwiegende Mehrheit der Zeilen sehen auf der einen Seite oder der anderen gehen. In einer ungefähren 50/50-Verteilung könnten Sie tatsächlich einen größeren Treffer erzielen, wenn Sie den Index auf dem neuesten Stand halten, als er bei der Abfrage der Tabelle erhalten würde.
- 1. JavaFx setText das Feld als int
- 2. Ist das uwsgi-Protokoll schneller als das http-Protokoll?
- 3. Warum ist float() schneller als int()?
- 4. Ist COUNT (Feld) schneller als COUNT (*)?
- 5. Linq To SQL: Warum ist das Disponieren und Wiederherstellen einer DataContext-Methode schneller als das Aktualisieren?
- 6. Warum ist das serverseitige HTML-Rendering schneller als die Clientseite?
- 7. Ist Object Literal Instanziierung schneller als das Festlegen von Eigenschaften?
- 8. Warum ist EnumerateFiles viel schneller als das Berechnen der Größen
- 9. Warum ist das Entpacken schneller als der Zugriff per Index?
- 10. g ++ __static_initialization_and_destruction_0 (int, int) - was ist das
- 11. Warum ist Lookahead (manchmal) schneller als das Capturen?
- 12. Warum ist das Vergleichen doppelt schneller als Uint64?
- 13. Schreiben ist schneller als das Lesen von x86?
- 14. Warum Neo4j ist schneller als SQL
- 15. Ist + = schneller als - =?
- 16. Ist das in SQL möglich?
- 17. Ist das Senden eines Formulars in JavaScript wesentlich schneller als das serverseitige Senden?
- 18. Gibt es ein Database Diagram-Programm, das leistungsfähiger ist als das mit MS SQL Server?
- 19. Int 10 in SQL Server
- 20. Problem, das ein Int als ein NSString
- 21. Bitfeld Spezialisierung in Python
- 22. Finde das nächste Datum in SQL Server
- 23. Warum schwebt das Summieren so langsam in einen int-temporären Lauf, als wenn alles int ist?
- 24. Warum ist das Verständnis von Listen viel schneller als das Multiplizieren von Arrays?
- 25. linq to sql Erstellen von demical Typ auf meiner Postleitzahl Feld, das int (ich denke)
- 26. Ist das Bündeln (Webpack/Browserify) schneller als das Durchlaufen eines CDN?
- 27. jQuery: Das Hinzufügen von Kontext zu einem Selektor ist viel schneller als das Verfeinern des Selektors?
- 28. Enthält ist schneller als StartsWith?
- 29. SQL: Richtig/Falsch/Null-Summe eines Bitfeld
- 30. Ist `extend` schneller als` + = `?
nicht sicher, ob dies für ältere Versionen von SQL Server wahr war, aber eigentlich Nach [MSDN] (https://msdn.microsoft.com/en-us/library/ms177603.aspx), 'BIT' Feld benutzt wirklich ein einzelnes Bit, aber alle 'BIT'-Spalten in einer Tabelle müssen zwingend ein Vielfaches von 8 Bit verwenden. – Sushruth