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. ルームライブラリはアセットフォルダからデータベースをコピーできますか?

    2. JavaをMysqlに接続する方法は?

    3. PostgreSQLとは何ですか?

    4. カンマ区切りの列データを追加の列に分割します