Ich mache aus zwei Tabellen von verschiedenen Datenbanken verbinden:MySQL Index funktioniert nicht richtig in
SELECT
count(*)
FROM
`db1`.`view1` p
join
`db2`.`table1` e
on e.Migration = p.s_encargo and e.did=149;
ich einen Index in Tabelle 1 wie folgt aus:
alter table table1 add INDEX `DID_Migration` (`DID`, `Migration`);
ich das addierte zwei Felder, die ich auf Klausel in im Index (‚haben‘ und ‚Migration‘)
Aber wenn ich die Abfrage ausführen, verwendet nur die erste Spalte des Indexes (tat): Dies ist die Erklärung der Abfrage.
Aber wenn ich zeigen, die erklären, der dieser anderen Frage:
select * from table1 where Migration = '100008600' and did=149;
diese Anwendung alle Spalten Index:
Warum in der ersten Abfrage nur die erste Spalte des Index verwenden, und in der zweiten Abfrage verwendet die zwei Spalten?
möchten, können Sie zur Verfügung stellen Tabellenstruktur DDL (Spaltentypen und Randbedingungen)? –
Bitte geben Sie uns Informationen zu Tabelle1: Wie viele Zeilen drin? Wie viele Zeilen pro 'Migration' (min/max/avg)? Wie viele Zeilen für 'DID = 149'? –
DID = 149 haben 5435 Zeilen. Tabelle1 hat 96003 Zeilen. Migration ist die ID einer anderen Tabelle, die Kombination DID und Migration sollte – hlastras