雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答えるべきでしょうか?
試してみましょう 1. テーブルを作成し、フィールドポートにインデックスを付ける テーブル `pre_request_logs_20180524` を作成します ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip` char(16) NOT NULL COMMENT 'プロキシIP', `port` int(8) NOT NULL COMMENT 'ポート番号', `status` enum('success','failure') NOT NULL COMMENT 'status', `create_time` datetime NOT NULL COMMENT '作成時刻', `update_time` datetime 更新時にデフォルトでNULL CURRENT_TIMESTAMP、 主キー (`id`)、 キー `idx_port` (`port`) BTREE の使用 ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='プロキシ IP リクエスト ログ'; テストデータを挿入 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (1, '192.168.1.199', 53149, '失敗', '2018-05-24 14:55:34', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (2, '192.168.1.100', 10653, 'Success', '2018-05-24 14:55:54', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (3, '192.168.1.112', 50359, 'Failed', '2018-05-24 14:56:00', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (4, '192.168.1.67', 30426, 'Failed', '2018-05-24 14:56:09', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (5, '192.168.1.209', 49323, '失敗', '2018-05-24 14:56:12', '2018-11-16 10:58:13') に挿入します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (6, '192.168.1.209', 51161, 'Success', '2018-05-24 14:56:13', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (7, '192.168.1.12', 54167, 'Success', '2018-05-24 14:56:16', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (8, '192.168.1.64', 20462, 'Success', '2018-05-24 14:56:19', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (9, '192.168.1.53', 22823, 'Failed', '2018-05-24 14:56:31', '2018-11-16 10:58:13') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (10, '192.168.1.85', 48229, 'Success', '2018-05-24 14:56:32', '2018-11-16 11:01:11') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (11, '192.168.1.85', 48229, 'Success', '2018-05-24 14:56:32', '2018-11-16 11:01:15') に INSERT INTO します。 ``(`id`, `ip`, `port`, `status`, `create_time`, `update_time`) VALUES (12, '192.168.1.85', 48229, 'Success', '2018-05-24 14:56:32', '2018-11-16 13:34:37') に INSERT INTO します。 2. SQLをテストする pre_request_logs_20180524 からポート (51161,20462,48229) を選択して、説明してください。 実行結果 結果からすると、インデックスは使用されていないように見えますが、結論を急がないでください。2 つの SQL 文を見てみましょう。 pre_request_logs_20180524 からポート (51161,48229) を含む * を選択します。 pre_request_logs_20180524 からポート (51161,20462) を選択して * を実行します。 実行結果は次のとおりです 2 番目の SQL ステートメントではインデックスが使用されていることがわかります。2 つの SQL ステートメントの違いは、ポート値が異なることです。一方には 48229 が含まれ、もう一方には 20462 が含まれます。 実際、MySQL オプティマイザは、セカンダリ インデックス、つまりポート フィールドのインデックスを使用するかどうかを自動的に判断します。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: vmware14Pro で Ubuntu システム インターフェイスが小さすぎる問題の解決方法の詳細な説明
目次1: galera-clusterの紹介2. galera-clusterの仕組み3: Mari...
目次1. マージインターフェース1.1 非関数メンバー1.2 関数メンバー序文:今日お話ししたいのは...
*******************HTML言語入門(パート2)*****************...
要件は次のとおりですテーブル構造、フィールドコメント情報、テーブル名などをエクスポートします。これは...
フロントエンド Web エンジニアとして、ページ効果を作成するときに次の現象に遭遇したことがあるはず...
MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...
目次1. 最も単純な例2. 音声の速度とピッチをカスタマイズする3. 音量の調整方法4. よく使われ...
この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...
目次502 不正なゲートウェイ エラーの発生1. 502 不正なゲートウェイ エラーとは何ですか? ...
一般的に、データ テーブル内の列を ID 列として設定すると、ID 列の表示値を手動で ID 列に挿...
ネットで検索してみたところ、多くの面接でモバイル適応方法について質問されることが分かりました。最近い...
IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...
ステップ1: 現在のカーネルを表示する 読み取る $ uname -a Linux rew 4.15...
SQLはテーブル内の重複レコードをすべて見つけます1. テーブルには id と name の 2 つ...
1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...