mysql:15568
From: "Nobuchika.tanaka" <"Nobuchika.tanaka" <tanaka.nobuchika@xxxxxxxxxx>>
Date: Thu, 14 Apr 2011 16:29:32 +0900
Subject: [mysql 15568] Partition pruningについて。
田中(たなか)と申します。 パーティショニングをしたテーブルから、特定のパーティションにあるデータを selectする際、 特定のパーティション以外のパーティションも選択され困っております。 特定のパーティションのみ選択され方法をご存知の方がいましたら、 アドバイスをお願いいたします。 ○環境 −MySQL:5.5.8 −OS:Redhat5.5 ○パーティションの設定方法 −end_time_date(Date型のカラム)を基準に、1週間毎のデータのパーティショ ンを1024個を設定。 PARTITION BY RANGE (to_days(end_time_date)) ( PARTITION p_2002_8_5 VALUES LESS THAN (to_days('2002_8_12')), PARTITION p_2002_8_12 VALUES LESS THAN (to_days('2002_8_19')), PARTITION p_2002_8_19 VALUES LESS THAN (to_days('2002_8_26')), #中略 PARTITION p_2022_2_28 VALUES LESS THAN (to_days('2022_3_7')), PARTITION p_2022_3_7 VALUES LESS THAN (to_days('2022_3_14')), PARTITION p_maxvalue VALUES LESS THAN maxvalue ); ○Partition pruning動作確認 −2011/03/28から2011/04/03の1週分のデータをselectする際に対象となる パーティションを確認 use development; explain partitions select * from t1 where end_time_date >= '2011-03-28' and end_time_date < '2011-04-03' \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: p_2002_8_5,p_2011_3_28 type: ALL possible_keys: end_time_date_idx key: NULL key_len: NULL ref: NULL rows: 266901 Extra: Using where ※p_2002_8_5という本来検索の対象とならないパーティションが選択されています。 ただし、where句の条件を範囲指定にしない場合、正しくパーティションが選択 されます。 use development; explain partitions select * from t1 where end_time_date = '2011-04-01' \G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: job partitions: p_2011_3_28 type: ref possible_keys: end_time_date_idx key: end_time_date_idx key_len: 3 ref: const rows: 36421 Extra: ※p_2011_3_28という本来検索の対象となるパーティションのみ選択されます。 以上、よろしくお願いいたします。 田中宣親
-> 15568 2011-04-14 16:29 ["Nobuchika.tanaka" <] Partition pruningについて。 15569 2011-04-14 16:43 ┗[Mikiya Okuno <mikiya] 15570 2011-04-15 07:58 ┗["Nobuchika.tanaka" <] 15573 2011-04-15 09:47 ┗[Mikiya Okuno <mikiya]