1. ホーム
  2. mysql

[解決済み] mysqlでdatetimeフィールドのインデックスを作成するのは良いアイデアですか?

2022-04-22 11:56:55

質問

大規模なデータベースの設計に取り組んでいます。私のアプリケーションでは、多くの行を持つことになります。例えば、私は現在400万レコードを持つ1つのテーブルを持っています。私のクエリのほとんどは、データを選択するためにdatetime句を使用しています。mysqlデータベースでdatetimeフィールドにインデックスを付けるのは良いアイデアでしょうか?

Select field1, field2,.....,field15
from table where field 20 between now() and now + 30 days 

私は、データベースが正常に動作し、クエリがスムーズに実行されるようにしようとしています。

もっと、高効率なデータベースを作るには、どんなアイデアが必要だと思いますか?

どのように解決するのですか?

MySQL では、条件間の行の削除を含むさまざまな理由でインデックスを使用することを推奨しています。 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

このことから、datetimeカラムは、クエリの中で頻繁に条件として使用するのであれば、インデックスの優れた候補になります。 もしあなたの唯一の条件が BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY) で、条件内に他のインデックスがない場合、MySQL は フルテーブルスキャン は、すべてのクエリで 30日間に何行生成されるかはわかりませんが、総行数の約1/3以下であれば、そのカラムにインデックスを使用した方が効率的でしょう。

効率的なデータベースを作るというご質問は、非常に幅が広いですね。 ただ、正規化され、適切なカラムにはすべてインデックスが付けられていることを確認してください(例:結合やWhere句で使用されるカラム)。