2016-06-07 10 views
1

Ich habe versucht, den ältesten Datensatz in einer Tabelle zu ermitteln und habe widersprüchliche Ergebnisse.älteste Diskrepanz?

Szenario 1

SELECT TOP 10 * FROM Ens_Util.Log ORDER BY TimeLogged ASC

SELECT TOP 10 text, TimeLogged, TraceCat, Type FROM Ens_Util.Log ORDER BY TimeLogged ASC

Text       TimeLogged   TraceCat Type 
Email sent via mailserv:25  2016-05-08 01:00:01 (null)  4 
[Requested record not found] 2016-05-08 01:01:13 (null)  2 
[Requested record not found] 2016-05-08 01:04:39 (null)  2 
[Requested record not found] 2016-05-08 01:04:53 (null)  2 
[Requested record not found] 2016-05-08 01:05:22 (null)  2 
[Requested record not found] 2016-05-08 01:05:45 (null)  2 
[Requested record not found] 2016-05-08 01:05:58 (null)  2 
[Requested record not found] 2016-05-08 01:05:58 (null)  2 
[Requested record not found] 2016-05-08 01:06:08 (null)  2 
[Requested record not found] 2016-05-08 01:06:15 (null)  2 

Scenario 2a

SELECT TOP 10 TimeLogged FROM Ens_Util.Log ORDER BY TimeLogged ASC

TimeLogged 
2015-10-10 16:30:46 
2015-10-10 21:15:07 
2015-10-11 22:08:18 
2015-10-12 21:57:00 
2015-10-13 21:39:27 
2015-10-14 23:40:15 
2015-10-15 23:28:10 
2015-10-16 23:36:52 
2015-10-17 23:10:04 
2015-10-18 22:32:49 

Szenario 2b

SELECT MIN(TimeLogged) FROM Ens_Util.Log

2015-10-10 16:30:46

Frage

Was hier geschieht? Warum die Diskrepanz? Wie lautet das Datum des ältesten Eintrags? 2016-05-08 oder 2015-10-10?

+1

Ich würde neu indizieren und die Statistiken neu erstellen dann versuchen Sie es erneut – Peter4499

Antwort

4

Mehr sieht aus wie Ihre Indizes sind falsch korrekte Werte aus TimeLogged extrahieren können, während in den verschiedenen Abfragen verwendet unterschiedliche Indizes. Rufen Sie einfach diese beiden Befehle auf, um den gesamten Index zu löschen und erneut zu erstellen. Das kann lange dauern, hängt davon ab, wie viele Protokolle Sie haben.

do ##class(Ens.Util.Log).%PurgeIndices() 
do ##class(Ens.Util.Log).%BuildIndices() 
+0

Leider ist dieses Ich habe nicht die Fähigkeit haben, zu tun, aber ich habe in einer Anfrage an unser Gastgeber setzen. Ich werde mit dem Ergebnis aktualisieren. –

+0

Wenn Sie Zugriff haben, können Sie versuchen, dies über [System Portal Management] (http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_persother#GOBJ_persother_rls_existrbld) zu tun. – DAiMor

+0

Praktisch Null Zugang zu LIVE, danke aber :) –

0

ein paar Dinge würde ich versuchen:

  • vergewissert, dass TimeLogged Feld wirklich ein Datatime ist
  • versuchen als String zu werfen und zu sortieren (manchmal implizite Abgüsse verwechseln Sortierung)
  • versuchen als Datum zu werfen

Worst-Case-Szenario:

Versuch von Jahr (TimeLogged), Mont zu bestellen h (TimeLogged), Tag (TimeLogged), Stunde (TimeLogged), Minute (TimeLogged), zweite (TimeLogged)

auch, nur für den Fall:

try Jahr (TimeLogged) zu wählen, Monat (TimeLogged) , Tag (TimeLogged), Stunde (TimeLogged), Minute (TimeLogged), zweite (TimeLogged) zu sehen, ob Sie