Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es eine gute Idee, das Datetime-Feld in MySQL zu indizieren?

MySQL empfiehlt die Verwendung von Indizes aus verschiedenen Gründen, einschließlich der Eliminierung von Zeilen zwischen Bedingungen:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Dies macht Ihre datetime-Spalte zu einem hervorragenden Kandidaten für einen Index, wenn Sie sie häufig in Abfragen unter Bedingungen verwenden. Wenn Ihre einzige Bedingung BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY) ist und Sie keinen anderen Index in der Bedingung haben, muss MySQL einen vollständigen Tabellenscan durchführen bei jeder Anfrage. Ich bin mir nicht sicher, wie viele Zeilen in 30 Tagen generiert werden, aber solange es weniger als etwa 1/3 der gesamten Zeilen sind, ist es effizienter, einen Index für die Spalte zu verwenden.

Ihre Frage zum Erstellen einer effizienten Datenbank ist sehr weit gefasst. Ich würde sagen, stellen Sie einfach sicher, dass es normalisiert ist und alle entsprechenden Spalten indiziert sind (d. h. diejenigen, die in Joins und Where-Klauseln verwendet werden).