2017-10-31 2 views
0

Ich habe eine Migration von einer SQL CE-Datenbank zu einer SQLite-Datenbank (3.18.0) durchgeführt, aber ich habe eine langsame Abfrage, wenn datetime-Spalten in Select vorhanden sind.Langsam Auswählen der Abfrageausführung in Spalte Datum

Meine SQLite-Spalte, die das Datetime speichert, ist vom Typ INTEGER. Daten werden in UNIX-Epochen (Sekunden) gespeichert.

In einer Tabelle mit 15 Spalten mit 1000 Datensätzen ist meine Abfrage etwa 3 Sekunden. Die gleiche Abfrage ohne das Datum (nur Name) ist sofort.

SELECT Name, 
CreatedDate  
FROM [Table] 

Gibt es etwas Besonderes zu Tür muss ich Daten in Text speichern?

EDIT:

Von Entity Framework, die erzeugte Abfrage ist:

SELECT 
[Extent1].[VisualizationIndex] AS [VisualizationIndex], 
[Extent1].[Identifier] AS [Identifier], 
[Extent1].[IdentifierParent] AS [IdentifierParent], 
[Extent1].[IdentifierEnvironment] AS [IdentifierEnvironment], 
[Extent1].[IdentifierReference] AS [IdentifierReference], 
[Extent1].[Name] AS [Name], 
[Extent1].[Description] AS [Description], 
[Extent1].[Type] AS [Type], 
[Extent1].[Visibility] AS [Visibility], 
[Extent1].[Layer] AS [Layer], 
[Extent1].[Version] AS [Version], 
[Extent1].[Created] AS [Created], 
[Extent1].[LastModified] AS [LastModified] 
FROM [CV_UsersComponents] AS [Extent1] 
ORDER BY [Extent1].[Name] ASC 

-- Executing at 10/31/2017 4:52:47 PM +01:00 
-- Completed in 3433 ms with result: SQLiteDataReader 
+0

Ist es noch langsam, wenn Sie die Datumsspalte auswählen, aber nicht wirklich in Ihrem Code lesen? –

+0

Ich mache die Auswahl in Visual Studio mit SQLite/SQL Server Compact-Toolbox von ErikEJ, also ist vielleicht etwas, das verlangsamt. –

+0

Und es ist langsam SQLite mit Entity Framework 6 zu verwenden. –

Antwort

-1

Sie können Timestamp-Wert anstelle der Daten verwenden. Datumkonversation erforderlich.

+0

Gemäß der SQLite-Dokumentation sind nur diese Affinitätstypen verfügbar: - INTEGER - TEXT - BLOB - REAL - NUMERIC. –

+0

timestamp value ist eine Ganzzahl, also nehmen Sie die Integerzahl der Datenbankseite. Das Datum in den Zeitstempel konvertieren wird von der PHP-Funktion zur Verfügung gestellt, die es benutzt und im DB als Integer speichert. Während Sie es zu diesem Zeitpunkt abrufen, verwenden Sie die PHP-Funktion, die den Timestamp-Integer-Wert in ein Datum umwandelt. –

Verwandte Themen