Frage

Ist es weniger effizient in einer SQL-Datenbank TEXT als varchar zu benutzen?

Wenn ja, warum?

Wenn nicht, warum werden Sie nicht nur immer TEXT verwenden?

Ich bin nicht eine bestimmte Datenbank hier Targeting aber Orakel ist wahrscheinlich die relevanteste, obwohl ich auf MySQL bin Tests für die Zeit im Rahmen eines Proof of Concept zu sein.

War es hilfreich?

Lösung

Von Microsoft hier

  

ntext, Text und Bilddatentypen   in einer zukünftigen Version entfernt wird von   Microsoft SQL Server. Vermeide das Benutzen   diese Datentypen in neuen Entwicklungs   arbeiten, und planen Sie das Ändern von Anwendungen   nutzen sie, dass zur Zeit. Verwenden   nvarchar (max), VARCHAR (max), und   varbinary (max) statt.

Wenn Sie varchar(max) über den Text verwenden Sie es in der WHERE Klausel verwenden können, weil sie die gleichen wie ihre kleineren Pendants, varchar,nvarchar and varbinary arbeiten. Im Folgenden finden Sie eine kleine Liste von dem, was im Gegensatz verwendet werden soll, was verwendet werden sollte:

  • Verwenden Sie varchar (max) anstelle von Text
  • Verwenden Sie nvarchar (max) anstelle von ntext-
  • Verwenden Sie varbinary (max) anstelle von Bild

Andere Tipps

PostgreSQL-Dokumentation sagt :

  

Tipp: Es ist keine Performance-Unterschiede zwischen diesen drei Typen, abgesehen von den erhöhten Speichergröße, wenn die Leerzeichen aufgefüllt Typ und ein paar zusätzliche Zyklen mit der Länge zu überprüfen, wenn sie in eine Länge versteift Spalt zu speichern. Während Zeichen (n) Leistungsvorteile in einigen anderen Datenbanksystemen hat, hat es keine solche Vorteile in PostgreSQL. In den meisten Situationen Text oder unterschiedlicher Charakter sollte stattdessen verwendet werden.

Die kurze Antwort lautet: Ja, sie sind weniger effizient

.

Die längere, gewundene Antwort lautet:

Ja, sie sind wahrscheinlich weniger effizient. Es hängt davon ab, auf dem DBMS Sie verwenden, und die Größe der Tabelle, etc, etc. Textfelder sind mit variabler Breite, und als solche das DBMS mehr Arbeit zu tun hat, wenn man versucht, Aufzeichnungen zu finden. Wie viel diese Auswirkungen auf Ihre Leistung ist direkt proportional zu, wie effizient Ihr DBMS im Allgemeinen ist, wie viele Daten es über Tabellenzeilen speichert, und ob optimiert sie fester Länge Tabellen.

Ich weiß, MySQL schneller mit festen Länge Tabellenzeilen funktioniert, aber man muss ihm sagen, dass die Tabelle der Lage ist, zunächst als feste Länge Tabelle behandelt werden. Ich habe nicht wirklich keine praktische Erfahrung mit anderen DBMS der Lage sein, aktuelle Zahlen zu beziehen. Aber auf Tabellen mit vielen (liest eine Million oder mehr) von Datensätzen, kann es einen wesentlichen Unterschied machen. Kleinere Tabellen werden allerdings zu keinen praktischen Unterschied wenig haben.

Sie müssen spezifisch sein, über welche Datenbank Sie sprechen. Ich glaube, dass zumindest einige Datenbanken, Text als CLOB- getrennt von der Tabelle gespeichert ist selbst (die nur eine Referenz enthält). Dies führt zu der Tabelle kleiner ist (gut), aber eine zusätzliche Lookup und wahrscheinlich Cache-Miss, wenn das Abrufen (sehr schlecht).

Es gibt wahrscheinlich die Indizierung und die Auswirkungen zu Abfrage, aber auch hier wird es von der jeweiligen RDBMS hängen Sie verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top