2016-06-23 3 views
1

Angenommen, ich habe eine MySQL (InnoDB) Tabelle so, weil die AnwendungslogikKann ich MySQL daran hindern, bestimmte Werte zu indizieren?

CREATE TABLE Item (id INT, ..., score INT, INDEX (score)); 

, alles mit einem Score von 1 beginnt, kurz danach jeder Punkt eine andere Partitur nach (mit relativ wenigen Kollisionen bekommen dass also der Index der Nicht-1-Werte ziemlich ausgewogen sein sollte).

Dies ist eine Schreib-häufig-Tabelle. Ich bin besorgt, dass, wenn die Datenbank skaliert, der Index verfälscht wird, speziell der Eimer mit Artikeln mit score=1. Ich verstehe nicht die vollständigen Auswirkungen in Bezug auf Fragmentierung und Clustering, und ich kann das nicht richtig testen, bis wir die Hardware skalieren.

Gibt es eine Möglichkeit, MySQL anzuweisen, keine Datensätze für diesen bestimmten Wert in den Index einzufügen?

Es gibt nie irgendwelche Abfragen mit WHERE score=1, die "schwierigste" erforderliche Abfrage wäre SELECT ... WHERE score>lower_limit ORDER BY score.

Antwort

Verwandte Themen