2012-01-22 16 views
0

私はmysqlにDATE TIMEカラムをたくさん持っています。私は自動インクリメント値である1の主キーを持っているどれもか0000-00-00午前0時00分○○秒日付時刻mysqlのデフォルト値、インデックス、および主キー

また、私のテーブルの上に

私はデフォルトを持っている必要があります。

私のクエリに表示されるすべての列にインデックスを追加してください。WHERE句?

PRIMARYキーにも外部キーを設定することをお勧めします。これは私のmysql JOINSを高速化するでしょうか?

答えて

2

は、私は、none、デフォルトまたは0000-00-00夜十二時00分00秒

"何の日" は許容されない場合は、NULLを使用している必要があります。ゼロ秒を指定すると、NULLの代わりにチェックする必要がありますが、チェックは遅くなり、スペース/帯域幅を浪費して格納/取得することになります。

私のクエリに表示されるすべてのカラムにインデックスを追加してください。 WHERE句?

いいえ、一意の値が最大の列にインデックスを追加するだけです。私は、MySQLのクエリプランナーが以前より優れているかどうかは分かりませんが、WHERE句の最初にその列が表示されるようにすることで、より良いパフォーマンスを得ることもできます。その理由は、クエリ結果を1つのwhere句で少数の行に制限した後は、残りの句を索引と同じように高速でリニアスキャンでチェックできるため、冗長なインデックスは単なるものに過ぎません(特に重要な)RAMを使用しています。

プライマリキーにも外部キーを設定することをお勧めしますか? MYSQLのジョインをスピードアップしますか?

外部キーの目的は、データに有効性制約を課すことであり、クエリのパフォーマンスとは関係ありません。つまり、できるだけ外部キーを使用する必要があります。これは、データの管理をより簡単にするための保証です。

+0

これはクールなおかげで、これは物事をより明確にしました! – cgwebprojects

関連する問題