をスピードアップするために月と年の列を作成します。私はmariadb/MySQLで大きなログテーブルを持っているタイムスタンプクエリ
CREATE TABLE `logs` (
`id` CHAR(36) NOT NULL,
`user` CHAR(4) NOT, NULL,
`dateCreated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`dateUpdated` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
私は月と年によって作成されたユーザおよび日付に基づいてログを照会しようとしています:
select * from logs where month(dateCreated) = '9' and year(dateCreated) = '2016' and user = '1234'
質問: 私は、クエリをスピードアップするために、2つの月と年と呼ばれる列、およびインデックス月、年、およびユーザーが作成したでしょうか?
ベンチマークそれは両方の方法。列を作成/維持するオーバーヘッドは、データをキャッシュすることによる利益を非常に上回る可能性があります。 –
PKはテーブルに存在しない列です。ブリリアント! – Strawberry
とにかく日付を日付として保存します。また、範囲クエリを使用します。 – Strawberry