私はmysqlのパーティションテーブルに2つの問題があります。YEARでテーブルをパーティション化し、MYSQLでビューを作成
私のテーブルは、私がでpartioningを適用するために、テーブルを変更する3つの列
- id_rowのINT NOT NULL AUTO_INCREMENT
- name_element VARCHAR
NULL NOT(45)NULL
ALTER TABLE `orderslist`
PARTITION BY RANGE(YEAR(date_element))
PARTITIONS 5(
PARTITION part_2013 VALUES LESS THAN (2014),
PARTITION part_2014 VALUES LESS THAN (2015),
PARTITION part_2015 VALUES LESS THAN (2016),
PARTITION part_2016 VALUES LESS THAN (2017),
PARTITION part_2017 VALUES LESS THAN (MAXVALUE));
が、私は、クエリがすべてのパーティションとpart_2015、part_2016とpart_2017だけではないを使用しています
EXPLAIN PARTITIONS SELECT * FROM ordersList WHERE YEAR(date_element) > '2015';
を使用しています。
代わりに私が
EXPLAIN PARTITIONS SELECT * FROM ordersList WHERE date_element > '2015-10-10 10:00:00';
を使用している場合、それは動作します。
だから私の質問は以下のとおりです。
- どのように私は、最初のクエリの作業を行うことができますか?
- このテーブルからパーティションを失うことなくマテリアライズドビューを作成する方法はありますか?
は
私は、MySQLが最初の 'WHERE'節の関数呼び出しが分割基準に一致することを認識するほどスマートではないと思われます。これは、クエリの型が列のインデックスを使用できないのと同じ理由です。 – Barmar