@TMaske77
Die Abfrage aus Access ist auch ok. Aber da MySQL es anscheinen nicht so gut verarbeitet bzw. dessen Optimizer nicht damit klar kommt, kann man es anders formulieren.
Manche DB Engines / Optimizer kommen mit einer anderen Formulierung besser klar.
Zu Deinem Beispiel:
index auf serial
select *
from scan_list
where serial in (select serial from scanlist where serial <>'0' group by serial having count >1)
order by serial, timestamp
Sollte auch funktionieren und bei der geringen Menge an Daten sollte es nicht lange dauern. (kein Unterschied bemerkbar)
Es kann aber gut sein, dass der Alias TMP den Optimizer verwirrt hat und die DB den Index nicht verwendet. Das von Access generierte Statement ist evtl. auf JET SQL optimiert.
Generell (ausser irgendwelche Spezialfälle) ist es besser eine exists Abfrage zu machen statt ein IN.
Bei Oracle vor 10g R2 gab es auch einen Bug. Bei neueren Versionen schreibt der Optimizer die Abfrage von IN in eine EXISTS Abfrage um.
Vielleicht kannst Du mal es ohne Alias TMP (so wie oben geschrieben) ausprobieren.
Bei der geringen Datenmenge sollte es eigentlich schnell gehen.
Grüße
Karsten
Die Abfrage aus Access ist auch ok. Aber da MySQL es anscheinen nicht so gut verarbeitet bzw. dessen Optimizer nicht damit klar kommt, kann man es anders formulieren.
Manche DB Engines / Optimizer kommen mit einer anderen Formulierung besser klar.
Zu Deinem Beispiel:
index auf serial
select *
from scan_list
where serial in (select serial from scanlist where serial <>'0' group by serial having count >1)
order by serial, timestamp
Sollte auch funktionieren und bei der geringen Menge an Daten sollte es nicht lange dauern. (kein Unterschied bemerkbar)
Es kann aber gut sein, dass der Alias TMP den Optimizer verwirrt hat und die DB den Index nicht verwendet. Das von Access generierte Statement ist evtl. auf JET SQL optimiert.
Generell (ausser irgendwelche Spezialfälle) ist es besser eine exists Abfrage zu machen statt ein IN.
Bei Oracle vor 10g R2 gab es auch einen Bug. Bei neueren Versionen schreibt der Optimizer die Abfrage von IN in eine EXISTS Abfrage um.
Vielleicht kannst Du mal es ohne Alias TMP (so wie oben geschrieben) ausprobieren.
Bei der geringen Datenmenge sollte es eigentlich schnell gehen.
Grüße
Karsten