sql >> Databáze >  >> RDS >> Mysql

Vyberte den v týdnu od data

Použijte DAYOFWEEK ve vašem dotazu něco jako:

SELECT * FROM mytable WHERE MONTH(event_date) = 5 AND DAYOFWEEK(event_date) = 7;

Zde najdete všechny informace o sobotách v květnu.

Chcete-li získat nejrychlejší čtení uložit denormalizované pole, které je dnem v týdnu (a cokoli dalšího, co potřebujete). Tímto způsobem můžete indexovat sloupce a vyhnout se úplnému prohledávání tabulky.

Zkuste nejprve výše uvedené, abyste zjistili, zda to vyhovuje vašim potřebám, a pokud ne, přidejte další sloupce a uložte data pro zápis. Dejte si pozor na anomálie aktualizace (pokud změníte datum_události, nezapomeňte aktualizovat sloupec day_of_week).

Všimněte si, že denormalizovaná pole prodlouží čas potřebný k zápisu, zvýší počet výpočtů při zápisu a zaberou více místa. Ujistěte se, že tuto výhodu opravdu potřebujete a můžete měřit, že vám pomáhá.



  1. REGEX, chcete-li vybrat n-tou hodnotu ze seznamu, s možností null

  2. SELECT / GROUP BY - časové úseky (10 sekund, 30 sekund atd.)

  3. Jak používáte klauzuli WITH v MySQL?

  4. MySQL:index json pole proměnné délky?