Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  パーティションに関する情報を取得する

19.3.5 パーティションに関する情報を取得する

このセクションでは、既存のパーティションに関する情報を取得する方法 (いくつかの方法が可能) について説明します。そのような情報を取得する方法には次のものが含まれます。

  • SHOW CREATE TABLE ステートメントを使用して、パーティション化されたテーブルの作成に使用されたパーティショニング句を表示する。

  • SHOW TABLE STATUS ステートメントを使用して、テーブルがパーティション化されているかどうかを判別する。

  • INFORMATION_SCHEMA.PARTITIONS テーブルを照会する。

  • EXPLAIN PARTITIONS SELECT ステートメントを使用して、指定された SELECT によってどのパーティションが使用されているかを確認する。

この章のほかの場所でも説明しているように、SHOW CREATE TABLE の出力にはパーティション化されたテーブルの作成に使用された PARTITION BY 句が含まれます。例:

mysql> SHOW CREATE TABLE trb3\G
*************************** 1. row ***************************
       Table: trb3
Create Table: CREATE TABLE `trb3` (
  `id` int(11) default NULL,
  `name` varchar(50) default NULL,
  `purchased` date default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
PARTITION BY RANGE (YEAR(purchased)) (
  PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM,
  PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM,
  PARTITION p2 VALUES LESS THAN (2000) ENGINE = MyISAM,
  PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM
)
1 row in set (0.00 sec)

パーティション化されたテーブルに対する SHOW TABLE STATUS の出力は、Create_options カラムに文字列 partitioned が含まれることを除いて、パーティション化されていないテーブルの場合と同じです。Engine カラムには、テーブルのすべてのパーティションによって使用されるストレージエンジンの名前が含まれます。(このステートメントについての詳細は、セクション13.7.5.37「SHOW TABLE STATUS 構文」を参照してください)。

パーティションに関する情報は、PARTITIONS テーブルを含む INFORMATION_SCHEMA からも取得できます。セクション21.13「INFORMATION_SCHEMA PARTITIONS テーブル」を参照してください。

指定された SELECT クエリーでパーティション化されたテーブルのどのパーティションが使用されるかは、EXPLAIN PARTITIONS を使用して判別できます。PARTITIONS キーワードは、partitions カラム (どのパーティションからのレコードがクエリーで照合されるかをリストする) を EXPLAIN の出力に追加します。

テーブル trb1 が次のように作成されて移入されているとします。

CREATE TABLE trb1 (id INT, name VARCHAR(50), purchased DATE)
    PARTITION BY RANGE(id)
    (
        PARTITION p0 VALUES LESS THAN (3),
        PARTITION p1 VALUES LESS THAN (7),
        PARTITION p2 VALUES LESS THAN (9),
        PARTITION p3 VALUES LESS THAN (11)
    );

INSERT INTO trb1 VALUES
    (1, 'desk organiser', '2003-10-15'),
    (2, 'CD player', '1993-11-05'),
    (3, 'TV set', '1996-03-10'),
    (4, 'bookcase', '1982-01-10'),
    (5, 'exercise bike', '2004-05-09'),
    (6, 'sofa', '1987-06-05'),
    (7, 'popcorn maker', '2001-11-22'),
    (8, 'aquarium', '1992-08-04'),
    (9, 'study desk', '1984-09-16'),
    (10, 'lava lamp', '1998-12-25');

SELECT * FROM trb1; などのクエリーでどのパーティションが使用されるかを次のように確認できます。

mysql> EXPLAIN PARTITIONS SELECT * FROM trb1\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: trb1
   partitions: p0,p1,p2,p3
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 10
        Extra: Using filesort

この場合、4 つのパーティションがすべて検索されます。ただし、次のようにパーティショニングキーを使用する制限条件をクエリーに追加すると、一致する値が含まれているパーティションのみがスキャンされることがわかります。

mysql> EXPLAIN PARTITIONS SELECT * FROM trb1 WHERE id < 5\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: trb1
   partitions: p0,p1
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 10
        Extra: Using where

EXPLAIN PARTITIONS では、普通の EXPLAIN SELECT ステートメントと同様に、使用されているキーおよび使用可能なキーに関する情報が表示されます。

mysql> ALTER TABLE trb1 ADD PRIMARY KEY (id);
Query OK, 10 rows affected (0.03 sec)
Records: 10  Duplicates: 0  Warnings: 0

mysql> EXPLAIN PARTITIONS SELECT * FROM trb1 WHERE id < 5\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: trb1
   partitions: p0,p1
         type: range
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 7
        Extra: Using where

EXPLAIN PARTITIONS に関する次の制約および制限に注目してください。

  • EXTENDED および PARTITIONS キーワードは、同一 EXPLAIN ... SELECT ステートメント内で一緒に使用できません。そうしようとすると構文エラーになります。

  • クエリーを検査するためにパーティション化されていないテーブルで EXPLAIN PARTITIONS を使用すると、エラーは発生しませんが、partitions カラムの値は常に NULL となります。

EXPLAIN PARTITIONS 出力の rows カラムには、テーブルの合計行数が表示されます。

セクション13.8.2「EXPLAIN 構文」も参照してください。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.