MySQL インデックスの使用を紹介する例

coldplay.xixi
リリース: 2020-12-11 17:34:16
転載
7958 人が閲覧しました

mysql チュートリアル 列の例で MySQL インデックスの使用方法を説明しますMySQL インデックスの使用を紹介する例

##その他の関連する無料学習の推奨事項: mysql チュートリアル(ビデオ)

MySQL インデックスの使用例

    • 1. スロークエリログ
    • 2. クエリ アナライザの説明
    • ##3. インデックスの基本的な使用法
    • ##4. 複合インデックス
    • #5. インデックスのカバー
    • #1. スロー クエリ ログ
    //查看是否开启慢查询日志
    mysql> show variables like '%slow%';//临时开启慢查询日志
    mysql> set global slow_query_log=ON;//查看是否开启慢查询日志
    mysql> show variables like '%slow%';
    ログイン後にコピー
//查询超过多少时间就可以记录,上面是如果超过10秒就要记录
mysql> show variables like '%long%';//改成一秒,如果超过一秒就写到慢日志里面去(一般一秒是最好的)mysql> set long_query_time=1;//查看日记存储方式,默认FILE
mysql> show variables like '%log_output%';// 慢查询日志文件所在位置
mysql> show variables like '%datadir%';
ログイン後にコピー

//响应时间是3秒,超过了原先设定的一秒
mysql> select sleep(3);
ログイン後にコピー
MySQL インデックスの使用を紹介する例

フォルダーを確認しに行ったところ、スロー クエリ ログに保存されていることがわかりました。MySQL インデックスの使用を紹介する例

MySQL インデックスの使用を紹介する例
このパートでは、スロー ログ

が遅いことを確認する方法について説明します

SQL の次の部分では、MySQL インデックスの使用を紹介する例SQL が遅い理由

と SQL を速くする方法について説明します。

2. クエリ アナライザー - 説明関数

: これを通じて、SQL のどこが遅いのか、どの側面を最適化する必要があるのか​​を知ることができます

columns :

employee データ テーブルを作成します

create table employee(
	id int not null auto_increment primary key,
	name varchar(30) comment '姓名',
	sex varchar(1) comment '性别',
	salary int comment '薪资(元)',
	dept varchar(30) comment '部门');insert into employee(name, sex, salary, dept) values('张三', '男', 5500, '部门A');insert into employee(name, sex, salary, dept) values('李洁', '女', 4500, '部门C');insert into employee(name, sex, salary, dept) values('李小梅', '女', 4200, '部门A');insert into employee(name, sex, salary, dept) values('欧阳辉', '男', 7500, '部门C');insert into employee(name, sex, salary, dept) values('李芳', '女', 8500, '部门A');insert into employee(name, sex, salary, dept) values('张江', '男', 6800, '部门A');insert into employee(name, sex, salary, dept) values('李四', '男', 12000, '部门B');insert into employee(name, sex, salary, dept) values('王五', '男', 3500, '部门B');insert into employee(name, sex, salary, dept) values('马小龙', '男', 6000, '部门A');insert into employee(name, sex, salary, dept) values('龙五', '男', 8000, '部门B');insert into employee(name, sex, salary, dept) values('冯小芳', '女', 10000, '部门C');insert into employee(name, sex, salary, dept) values('马小花', '女', 4000, '部门B');insert into employee(name, sex, salary, dept) values('柳峰', '男', 8800, '部门A');
ログイン後にコピー

//通过explain解读他,后面加一个\G便于阅读
mysql> explain select * from employee where name='柳峰'\G;//扫描快捷
mysql> explain select * from employee where id=13\G;
ログイン後にコピー

MySQL インデックスの使用を紹介する例 結果: 以下に示すように、その理由がわかります。以前は非常に遅く、応答時間は 4 秒かかりました

MySQL インデックスの使用を紹介する例

3. インデックスの基本的な使用法

mysql> show index from employee\G;//主键会默认建一个id索引
ログイン後にコピー

MySQL インデックスの使用を紹介する例

インデックスの改善作成効率

//查询分析
mysql> explain select * from employee where name='柳峰';//创建普通索引
mysql> create index idx_name on employee(name);
ログイン後にコピー

MySQL インデックスの使用を紹介する例

//删除
mysql> drop index idx_name on employee;
ログイン後にコピー

先生のリスト: MySQL インデックスの使用を紹介する例

MySQL インデックスの使用を紹介する例likeを使って検索すると効率が上がります

MySQL インデックスの使用を紹介する例

4. 複合インデックス

//查的时候可以看到一个主键索引
mysql> show index from employee\G;
ログイン後にコピー

MySQL インデックスの使用を紹介する例

現在は次のようになります。すべてのグローバル スキャン

select * from employee where name ='柳峰';//查询分析
explain select * from employee where name ='柳峰'\G;
ログイン後にコピー

MySQL インデックスの使用を紹介する例

インデックスの作成

//创建索引
create index idx_name_salary_dept on employee(name,salary,dept);//查询分析
explain select * from employee where name ='柳峰'\G;
ログイン後にコピー

MySQL インデックスの使用を紹介する例

名前がある場合、インデックスにインデックスを作成できることを確認します

// name和salary
mysql> explain select * from employee where name ='柳峰' and salary=8800\G;//name和dept
mysql> explain select * from employee where name ='柳峰' and dept='部门A'\G;
ログイン後にコピー

MySQL インデックスの使用を紹介する例

No Name はインデックスを使用できません

mysql> explain select * from employee where  salary=8800;mysql> explain select * from employee where  dept='部门A';
ログイン後にコピー

MySQL インデックスの使用を紹介する例

5. インデックスをカバーしています

上記に従います手順を実行すると、4 つのインデックスが表示されます。最初のインデックスは MySQL インデックスの使用を紹介する例 主キー インデックス

、次に

複合インデックス

name_salary_dept

mysql> show index from employee;
ログイン後にコピー
# です。 ## トリガー方法 ID をクエリ データとして使用します
mysql> select * from employee;mysql> select * from employee where id =11;
ログイン後にコピー

MySQL インデックスの使用を紹介する例

ID のみを確認します

mysql> explain select id from employee  employee where id=11\G;mysql> explain select id from employee\G;
ログイン後にコピー

MySQL インデックスの使用を紹介する例

//查name,salary
mysql> explain select name,salary from employee;//查name,salary,dept
mysql> explain select name,salary,dept from employee;//因为没有sxe条件,所以只能做全部扫描type为null
mysql> explain select name,sex,salary,dept from employee;
ログイン後にコピー

以上がMySQL インデックスの使用を紹介する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!