Rolf B: Einträge nach Jahre ein-/ ausblenden

Beitrag lesen

Hallo Bernd,

wenn deine Jahreszahlen aus va_settings kommen, dann gibt es einen reinen SQL Weg. Er setzt natürlich voraus, dass die Spalte jahr in deiner va_settings Tabelle ausschließlich vierstellige Jahreszahlen enthält.

SELECT *
FROM   projekte
WHERE  SUBSTR(von, -4) IN (SELECT jahr FROM va_settings WHERE userid=?);

Performant ist das nicht, das liegt aber am Format von von. Ein Datenmodell mit einer DATE-Spalte wäre hier auch nicht unbedingt besser, weil mysql dann pro Row die Jahreszahl aus dem Date herausrechnen muss. Für beste Performance sollte das Jahr in einer berechneten, materialisierten Spalte stehen (-> SQL Handbuch: generated column mit STORED Schlüsselwort). Eine generated column hat den Vorteil, dass MYSQL sie für dich aktuell hält, du musst nichts dafür tun. Eine stored column kann man auch problemlos indexieren.

Rolf

--
sumpsi - posui - clusi