[解決済み] 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句で使用されるカラム)。
関連
-
MySQLにおけるorder byの使用方法の詳細
-
[解決済み] ユニークなテーブル/エイリアスではない
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み】MySQLのDatetimeカラムにデフォルト値を設定する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ジョイントインデックスのためのmysqlの条件とインデックスが失敗するための条件
-
MySql認証ベースのvsftpd仮想ユーザー
-
MySQLデータベースで数百万件のデータを10秒間で挿入
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
mysql がエラーを報告します。不明な文字セットです。'utf8mb4'
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?