Bei meiner Frau gibt es eine Debatte darüber, nur varchar(255)
für alle varchar
Felder in temporären Tabellen in gespeicherten Prozeduren zu verwenden. Grundsätzlich möchte ein Camp 255 verwenden, da dies auch dann immer funktioniert, wenn sich die Definition ändert, und das andere Camp möchte die Größe in den Quelltabellen beibehalten, um potenzielle Leistungsverbesserungen zu erzielen.
Ist das Aufführungslager richtig? Gibt es noch andere Implikationen? Sie verwenden SQL Server.
sql-server
performance
datatypes
temporary-tables
Brian Nickel
quelle
quelle
MAX()
in der Mischung.Antworten:
Je nachdem, wie Sie Ihre temporären Tabellen verwenden, kann es zu einem Problem mit der Datenkürzung kommen.
Dieses Beispiel ist ein bisschen erfunden, aber es illustriert meinen Standpunkt. Beispiel:
Die temporäre Tabelle würde gerne den neuen varchar-Wert mit einer Länge von 59 akzeptieren. Ihre Benutzertabelle konnte dies jedoch nicht. Je nachdem, wie Sie in Ihrer Prozedur damit umgehen, kann dies zu Kürzungen oder Fehlern führen.
Sofern Sie diese Probleme nicht dokumentieren und berücksichtigen, kann Ihr Vorgang auf unerwartete Weise ausgeführt werden.
Ich persönlich glaube nicht, dass es zu 100% eine richtige Antwort auf diese Frage gibt. Es hängt wirklich davon ab, wie Sie diese temporären Tabellen verwenden.
Hoffe das hilft
quelle
Ich würde mich zur Verwendung der tatsächlichen Feldlänge neigen.
Ich habe kürzlich gelesen, dass MySQL-temporäre Tabellen (ich gehe davon aus, dass SQL Server ähnlich ist) genügend Speicher zuweisen, um die maximal mögliche Länge für jede
varchar
Spalte zu speichern ... Ein systematischer Ansatz, um 200% -500% des erforderlichen Speichers fürvarchar
Felder insgesamt zuzuweisen gespeicherte Prozeduren scheinen eine unnötige Beanspruchung der Systemressourcen zu sein. Wenn Sie beim Erstellen dieser temporären Tabellen jemals eine erhebliche Menge an Arbeitsspeicher verwenden, können Sie unnötigerweise Arbeitsspeicher beanspruchen, der zum Zwischenspeichern verwendet wurde, und zu einem späteren Zeitpunkt mehr Arbeit für den Server erstellen, selbst nachdem die Speicherprozeduren abgeschlossen sind.Bearbeiten: Siehe die Antwort von Bill Karwin: /programming/1962310/importance-of-varchar-length-in-mysql-table
quelle