0

2,000万を超えるレコードがあるテーブルを使用していますが、クエリの実行にかなりの時間がかかります。シーケンス番号が100万に達した場合、table_name_iのような名前が事前定義された名前付け構文でパーティションを作成し、増分を続けるという定義またはステートメントを作成できますか。

テーブルの定義は次のようになります。

Table name - CHIP_DETAILS
Columns - 
  SEQ_NO - INT(10) - Auto Increment
  CHIP_ID - Varchar(16)
  TOKEN - VARCHAR(16)
  CHIP_BLOB (TINY BLOB)
  TOKEN BLOB (TINY BLOB)
  GENERATED_TIMESTAMP - TIMESTAMP
  USER_ID - INT(10)

MYSQL version - MySQL server 5.5.23 
OS - Windows 7 Home Premium - 64 Bit 
RAM - 8 Gigs 
Processor - Intel i5 2.53

どんな助けでも大歓迎です。

4

2 に答える 2

0

テーブルの分割は、日付などの列の値を使用して行う必要があります。1 か月分のデータを各パーティションに入れる場合、つまり 2 か月分のデータのみを対象とするクエリ (クエリのフィルターで明示的に指定する必要があります) の場合、オプティマイザーは 2 つのパーティションのみを含める必要があります。結果。データ内の列 (たとえば月) でパーティション分割し、row_id などの任意の非データ ベースのパーティション キーを使用しない限り、オプティマイザーは、クエリに応答するために必要なデータがどのパーティションに存在するかをどのように知るのでしょうか? すべてのパーティションを参照してから、すべてのデータをつなぎ合わせる必要があるため、パーティション化しない場合よりもクエリがさらに遅くなります。

于 2012-09-04T12:16:00.817 に答える