Ich habe eine Tabelle Beiträge mit den folgenden Spalten:
start_at, sun, mon, tue, wen, thu, fri, sat
Indexing eine MYSQL Tabelle mit vielen Spalten
start_at ist der Datumstypen, die andere - Tinyint.
Ich mache eine Abfrage die folgende Art und Weise:
SELECT * FROM posts WHERE start_at >= '2017-02-01' AND mon = 1
, das nach dem zweiten und ich richtigem Wochentag dynamisch festgelegt.
Was ist der beste Weg, diese Tabelle zu indizieren? Benötige ich einen zusammengesetzten Index für jeden Tag der Woche zu machen, zum Beispiel:
CREATE INDEX mon_index ON posts(start_at,mon);
CREATE INDEX sun_index ON posts(start_at,sun);
Wenn ich erstelle 7 Indizes für jeden Tag der Woche, ich glaube, INSERT und UPDATE wirklich langsam sein werden.
AKTUALISIERT: Ich brauche Spalte für jeden Wochentag, weil ein Benutzer legt fest, an welchen Tagen Post veröffentlicht wird. Es kann ein paar Tage zur selben Zeit sein.
Warum brauchen Sie diesen Tisch? Es scheint mir sinnvoller zu sein, eine einzige Datumsspalte zu haben. In Bezug auf den Index hängt es davon ab, wie Sie die Tabelle verwenden möchten. –
mehr als eins von Sonne, Mon, etc. kann 1 auf dem gleichen Datensatz sein? – etsa
https://dba.stackexchange.com/ könnte ein besserer Ort sein, um das zu fragen? –