序文 パーティション フィールドは主キーの一部でなければならないことは誰もが知っています。では、複合主キーを作成した後、パーティション フィールドに別のインデックスを追加する必要がありますか?効果はありますか?検証してみましょう。早速、詳しい紹介を見ていきましょう。 1. 新しいテーブル effect_new を作成します (作成時間に基づいて月ごとにパーティション化されます) テーブル `effect_new` を作成します ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `type` tinyint(4) NOT NULL デフォルト '0', `timezone` varchar(10) デフォルト NULL, `date` varchar(10) NOT NULL, `hour` varchar(2) デフォルト NULL, `position` varchar(200) デフォルト NULL, `country` varchar(32) NOT NULL, `create_time` 日時 NOT NULL デフォルト '1970-01-01 00:00:00', 主キー (`id`,`create_time`)、 キー `index_date_hour_country` (`date`,`hour`,`country`) ) ENGINE=InnoDB AUTO_INCREMENT=983041 デフォルトCHARSET=utf8 範囲によるパーティション分割 (TO_DAYS (`create_time`)) (パーティション p0 の値が (736754) 未満です) エンジン = InnoDB、 パーティション p1 の値が (736785) 未満です。エンジン = InnoDB、 パーティション p2 の値が (736815) 未満です。エンジン = InnoDB、 パーティション p3 の値が (736846) 未満です。エンジン = InnoDB、 パーティション p4 の値が (736876) 未満です。エンジン = InnoDB、 パーティション p5 の値が (736907) 未満です。エンジン = InnoDB、 パーティション p6 値が (736938) 未満です。エンジン = InnoDB、 パーティション p7 の値が (736968) 未満です。エンジン = InnoDB、 パーティション p8 値が (736999) 未満 エンジン = InnoDB、 パーティション p9 値が (737029) 未満です。エンジン = InnoDB、 パーティション p10 の値が (737060) 未満です。エンジン = InnoDB); 2. データを挿入します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('1', '0', 'GMT+8', '2017-07-01', '', 'M-NotiCleanFull-FamilyRecom-0026', '', '2017-07-02 00:07:02') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('2', '1', 'GMT+8', '2017-09-30', '23', 'Ma5dtJub', 'EG', '2017-10-01 00:00:00') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('3', '1', 'GMT+8', '2017-09-10', '10', '28', 'DZ', '2017-09-11 00:08:20') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('4', '1', 'GMT+8', '2017-02-03', '20', '32', 'AD', '2017-02-04 00:00:00') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('5', '0', 'GMT+8', '2017-03-05', '2', NULL, 'AI', '2017-03-06 02:10:00') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('6', '0', 'GMT+8', '2017-09-23', '13', 'M-BrandSplash-S-0038', 'AG', '2017-09-23 13:00:00') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('7', '1', NULL, '2017-10-13', '12', 'BB-Main-AppAd-0018', 'AF', '2017-10-14 12:00:00') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('8', '0', 'GMT+8', '2017-10-28', '2', 'M-ChargeReminder-S-0040', 'AE', '2017-10-29 00:00:00') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('9', '1', 'GMT+8', '2017-10-09', NULL, '30', 'AI', '2017-10-10 00:09:00') に INSERT INTO します。 `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('10', '0', 'GMT+8', '2017-10-05', '5', ' M-BrandSplash', 'LA', '2017-10-06 05:10:00') に INSERT INTO します。 3. ステートメントを分析する パーティションの説明 effect_new_indexから*を選択 ここで、create_time = '2017-10-14 12:00:00' 結果は次のとおりです。
4. テーブルeffect_newにインデックスidx_ctimeを追加します。 5. インデックスを追加した後の実行プランを分析する 結果は次のとおりです。
6. 結論: テーブルはこのフィールドによってパーティション分割されますが、これはインデックスと同等ではありません。パーティション分割後、フィールドに特定の値を持つレコードが特定のパーティションに含まれることしか言えませんが、それはインデックスではないため、それらを見つけるのに時間がかかります。 場合によっては、主キーがパーティション列と等しくないことがあります。主キーにクラスター化インデックスを作成する場合は、パーティション列を含めて複合主キーにする必要があります。では、この場合、パーティション基準列にはインデックスがないのでしょうか?はい、しかし、十分な速度ではありません。パーティション列がこの複合インデックスで最初にランクされていない場合、十分な速度ではありません。パーティション列が検索ステートメントのフィルタリング条件として頻繁に使用される場合は、パーティション列用の追加インデックスを作成する必要があります。 要約する 上記はこの記事の全内容です。この記事にはまだ多くの欠点があります。この記事の内容が皆様の勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: VMware WorkStation 14 pro インストール Ubuntu 17.04 チュートリアル
>>: VMware での Ubuntu と Windows 間のファイル共有
nginx 設定ファイルは主に 4 つの部分に分かれています。 main{#(グローバル設定) ht...
関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...
序文MySQL スロー クエリ ログは、MySQL が提供するログ レコードの一種です。これは、応答...
目次序文1. Props、$emit一方向データフロー2. $親、$子3. $attrs、$list...
テキストシャドウテキストに影を追加します。テキストとテキスト装飾に複数のシャドウを追加することができ...
デフォルトの Linux カーネル パラメータは最も一般的なシナリオに基づいており、高い同時アクセス...
スクリプトを書く目的は、さまざまなサービスを手動で起動しなくて済むようにすることです(怠惰のためでも...
フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...
1. Docker Secretとは1. シナリオ表示MySQL サービスなど、一部のサービスではパ...
1. 時刻の書式設定とその他の方法moment.jsライブラリファイルの使用をお勧めします2. テン...
使用制限クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要が...
この記事では、Vue.jsの具体的なコードを共有して、シンプルな折りたたみパネルを実装する例を紹介し...
注意: 計画、設計、開発のいずれの場合でも、これらの間違いは避けなければなりません。 1. ナビゲー...
次のようなシナリオがあります。円形のコンテナで、最も外側のコンテナの背景が円弧になっています。内側の...
なぜテキストエリアについて具体的に言及するのでしょうか?なぜなら、textarea ノードは実際には...