Sqlite3: Wie sortiere ich Spalten in einer Tabelle?

8

Es scheint, dass es für reordering columns in sqlite3 table nicht einfach ist. Zumindest die sqlite manager in firefox unterstützt diese Funktion nicht. Verschieben Sie beispielsweise column2 in column3 und verschieben Sie column5 in column2. Gibt es eine Möglichkeit, Spalten in der SQLite-Tabelle neu anzuordnen, entweder mit einer SQLite-Verwaltungssoftware oder einem Skript? Danke.

    
user938363 13.12.2013, 19:06
quelle

3 Antworten

19

Dies ist keine einfache Aufgabe in einem DBMS. Sie müssten fast sicher eine neue Tabelle mit der gewünschten Reihenfolge erstellen und Ihre Daten von einer Tabelle in die Reihenfolge verschieben. Es gibt keine alter table-Anweisung, um die Spalten neu anzuordnen. Daher werden Sie in sqlite manager oder an einem anderen Ort keine Möglichkeit finden, dies in derselben Tabelle zu tun.

Wenn Sie die Reihenfolge wirklich ändern möchten, können Sie Folgendes tun:

Angenommen, Sie haben tabelleA:

%Vor%

Sie könnten eine Tabelle erstellen, deren Spalten wie gewünscht sortiert sind:

%Vor%

Verschieben Sie die Daten anschließend in TabelleB aus TabelleA:

%Vor%

Entfernen Sie dann die ursprüngliche TabelleA und benennen Sie TabelleB in TabelleA um:

%Vor%

sqlfiddle-Demo

    
Filipe Silva 13.12.2013, 19:15
quelle
7

Sie können die Spalten in Ihrer SELECT-Anweisung immer so anordnen, wie Sie möchten:

%Vor%

Sie sollten sie nicht in der Tabelle selbst "bestellen" müssen.

    
BWS 13.12.2013 19:14
quelle
2

Die Reihenfolge in sqlite3 spielt eine Rolle. Konzeptionell sollte es nicht, aber versuchen Sie dieses Experiment, um zu beweisen, dass es tut:

%Vor%

Füllen Sie die Tabelle mit etwa 20.000 Datensätzen auf, wobei die Miniaturansicht ein kleines JPEG ist. Dann machen Sie ein paar Fragen wie folgt:

%Vor%

Unabhängig davon, wie viele Datensätze zurückgegeben werden, dauert die erste Abfrage auf meinem Computer etwa 0.0.008s und die zweite Abfrage 0.09442s. Massiver Unterschied, und der Grund ist wegen des Blobs; Dateigröße ist bevor der Blob und basicscanstatus danach ist.

Wir haben den Blob jetzt in seinen eigenen Tisch verschoben, und unsere App ist glücklich.

    
user8353681 23.07.2017 15:35
quelle

Tags und Links