sql >> Database teknologi >  >> RDS >> Mysql

Er det en god idé at indeksere datetime-feltet i mysql?

MySQL anbefaler at bruge indekser af en række forskellige årsager, herunder eliminering af rækker mellem betingelser:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Dette gør din datetime-kolonne til en fremragende kandidat til et indeks, hvis du skal bruge den under forhold, der ofte er i forespørgsler. Hvis din eneste betingelse er BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY) og du ikke har noget andet indeks i tilstanden, bliver MySQL nødt til at foretage en fuld tabelscanning på hver forespørgsel. Jeg er ikke sikker på, hvor mange rækker der genereres på 30 dage, men så længe det er mindre end omkring 1/3 af de samlede rækker, vil det være mere effektivt at bruge et indeks på kolonnen.

Dit spørgsmål om oprettelse af en effektiv database er meget bredt. Jeg vil sige, at du bare skal sørge for, at det er normaliseret, og at alle relevante kolonner er indekseret (dvs. dem, der bruges i joins og where-sætninger).



  1. subsonic 2 join på flere kolonner

  2. STOR USIGNET VÆRDI ER uden for rækkevidde Min SQL

  3. For mange automatiske stigninger med ON DUPLICATE KEY UPDATE

  4. Hurtigt script, der returnerer alle egenskaber fra SERVERPROPERTY() i SQL Server 2017/2019