Nehmen wir an, Sie haben eine Tabelle mit id,a,b,c,d,e,f,g
mit rund 1 Million Zeilen. Dann könnte man eine Abfrage mit mehreren WHERE ...AND...AND...etc
Bedingungen in mehreren Kombinationen machen. Das ist zum Beispiel a AND b AND e
oder a AND f AND g
oder e AND f AND g
.Mehrere oder einzelne zusammengesetzte Index
Also um alle Kombinationen zu berücksichtigen, müssten Sie mehrere zusammengesetzte Indizes erstellen, aber was, wenn a,b,c,d,e,f,g
einen Bereich von [1,10] daher keine Null haben.
Könnte man einfach eine einzelne Verbindung pro Start variabel machen, so a,b,c,d,e,f,g
und b,a,c,d,e,f,g
etc .. und die während der Abfragezeit wie etwas tun
#b and e have not been chosen
SELECT * FROM WHERE a=3 AND b!=0 AND c=4 AND d=5 AND e!=0 AND f=1 AND g=9
#I think you get the logic
Könnte eine solche Prozedur erlauben mysql noch die Verbindung Index zu verwenden oder ich tun müssen wirklich alle möglichen Kombinationen von zusammengesetzten Indizes erstellen.
Das Endergebnis würde die Anzahl der Indizes bis 7 statt Anzahl von links Kombinationen possibles reduzieren, die höher ist als Weg 7.
Diese Art von Problem ist manchmal symptomatisch für einen Mangel an Normalisierung – Strawberry
Es ist die Simulation einer materialisierten Ansicht in Mysql daher die hohe Anzahl der Spalten. – delmalki
Erdbeere hat einen Punkt der Normalisierung, vorausgesetzt, Ihre a-g-Spalten haben alle denselben Kontext.Wenn Ihre Daten jedoch jeweils eine a-g-Spalte haben, haben Sie einen eigenen normalisierten Wert - wie in einer Tabelle mit den Govt-Verträgen, mit der ich gearbeitet habe. Die Wurzeltabelle hatte Links zu mehr als 20 individuellen Referenztabellen, die jeweils auf ID normiert waren. Wenn Sie mehr als den generischen a-g-Kontext erweitern können, könnten wir Ihnen eine bessere Klärung und Eingabe für Ihre Situation bieten. – DRapp