Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql - времева марка за търсене по час от деня

Можете да използвате HOUR() функция:

SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9

Уви, ефективността на тази заявка ще бъде ужасна , щом преминете през няколко хиляди реда - функциите не могат да се индексират, така че ще има пълно сканиране на таблицата всеки път, когато тази заявка се изпълнява.

Какво направихме в подобна ситуация:създадохме друга колона updatetime_hour , индексира го и го попълни при вмъкване (и актуализира при актуализиране); тогава заявката става бърза:

SELECT * FROM 'table' WHERE `updatetime_hour` = 9

Да, денормализирахме данните и това е малко повече домакинство, но все още не виждам по-бързо решение. (Ние разгледахме и измерихме тригери за вмъкване и актуализиране, за да попълним updatetime_hour от updatetime , но реши против за изпълнение; вижте дали биха били полезни за вас.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мога ли да създам база данни, използвайки PDO в PHP?

  2. Предоставен е невалиден аргумент за foreach() в Codeigniter

  3. PHP - Грешка While/Else?

  4. Комбиниране на операции UNION и LIMIT в MySQL заявка

  5. MySQL CURRENT_TIMESTAMP полета се актуализира при всяка актуализация