Wenn ich diese Abfrage auf der Tabelle ausgeführt, die 14 K Aufzeichnungen hatGruppierung mit Aggregatabfrage wird das Zeitlimit MySQL
select max(id) as 'id' from table_records where search_counter='0' group by Record_Date
führt sie in 0,016 sec die 676 Datensätze zurück
Die ID Spalte ist Primärschlüssel und es hat auch eindeutigen Index darauf definiert
Jetztwenn ich die obige Abfrage als subquery zum Beispiel
select * from table_records where id in
(select max(id) as 'id' from table_records where search_counter='0' group by Record_Date)
Dies führt für immer. Auf meiner lokalen Dev-Maschine dauert es 139,511 sec auf dem Server auszuführen, es
Zeitüberschreitung erhält Ich bin nicht sicher, was hier genau los ist.
Jede Hilfe wäre
Können Sie pls das Ergebnis erklären für die zweite Abfrage teilen? Übrigens müssen Sie nicht den Primärschlüssel und den eindeutigen Index für dasselbe Feld definieren. Haben Sie versucht, die Abfrage neu zu schreiben, um einen Join statt einer In-Klausel zu verwenden? – Shadow
@Shadow Kannst du mir mit der Join-Abfrage aushelfen? Ich bin nicht in der Lage, es zu lösen. – Sandhurst
Probieren Sie dies aus: 'select t1.id, t1.record_date aus table_records t1 inner join (wählen Sie max (id) als 'id' aus table_records where search_counter = '0' Gruppe von Record_Date) t2 on t1.id = t2.id; ' –