sql >> Databasteknik >  >> RDS >> Mysql

Är det en bra idé att indexera datetime-fältet i mysql?

MySQL rekommenderar att du använder index av en mängd olika skäl, inklusive eliminering av rader mellan villkor:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Detta gör din datetime-kolumn till en utmärkt kandidat för ett index om du ska använda den under förhållanden ofta i frågor. Om ditt enda villkor är BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY) och du inte har något annat index i tillståndet måste MySQL göra en full tabellskanning på varje fråga. Jag är inte säker på hur många rader som genereras på 30 dagar, men så länge det är mindre än cirka 1/3 av det totala antalet rader kommer det att vara mer effektivt att använda ett index på kolumnen.

Din fråga om att skapa en effektiv databas är mycket bred. Jag skulle säga att bara se till att det är normaliserat och att alla lämpliga kolumner är indexerade (dvs. de som används i joins och where-satser).



  1. Använda bulk_update_mappings i SQLAlchemy för att uppdatera flera rader med olika värden

  2. Varning:mysqli_connect():Okänd MySQL-servervärd

  3. Implementera en Multi-Datacenter Setup för PostgreSQL - Del ett

  4. Konfigurera en lyssnare i Oracle Database (12c, 18c och 19c utgåvor)