Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wann sollte ich einen zusammengesetzten Index verwenden?

Sie sollten einen zusammengesetzten Index verwenden, wenn Sie Abfragen verwenden, die davon profitieren. Ein zusammengesetzter Index, der wie folgt aussieht:

index( column_A, column_B, column_C )

wird einer Abfrage zugute kommen, die diese Felder zum Verbinden, Filtern und manchmal Auswählen verwendet. Es kommt auch Abfragen zugute, die die am weitesten links stehenden Teilmengen von Spalten in dieser Zusammensetzung verwenden. Der obige Index wird also auch Abfragen erfüllen, die

index( column_A, column_B, column_C )
index( column_A, column_B )
index( column_A )

Aber es wird nicht (zumindest nicht direkt, vielleicht kann es teilweise helfen, wenn es keine besseren Indizes gibt) bei Abfragen helfen, die

index( column_A, column_C )

Beachten Sie, dass Spalte_B fehlt.

In Ihrem ursprünglichen Beispiel profitiert ein zusammengesetzter Index für zwei Dimensionen hauptsächlich von Abfragen, die beide Dimensionen oder die ganz linke Dimension allein abfragen, aber nicht die ganz rechte Dimension allein. Wenn Sie immer zwei Dimensionen abfragen, ist ein zusammengesetzter Index der richtige Weg, es spielt keine Rolle, welcher zuerst kommt (höchstwahrscheinlich).