# 今週何知った? week:33
## 各自発表
> [name=makicamel]
[自作 OS x 自作ブラウザで学ぶ Web ページが表示されるまで/第 2 章 簡単な通信 ping コマンドを実装してみる](https://esa-pages.io/p/sharing/19215/posts/56/d4d268e69203f9db8873.html)
> [name=ken3ypa]
環境:MySQL5.7
### 実行したSQLのプロファイリング情報を取得する
プロファイルを有効にする
```
SET profiling = 1;
```
有効かどうかを確認する
```
SELECT @@profiling;
```
|@@profiling|
| --- |
|1|
Query_ID および計測したときの時間を確認する
```
SHOW PROFILES;
```
| Query_ID | Duration | Query |
| --- | --- | --- |
| 1 | 0.00194900 | SELECT @@profiling |
```
SHOW PROFILE FOR QUERY [Query_id]
```
---
## EXPLAIN で具体的なコストまで表示する
EXPLAIN FORMAT=JSON
クエリの具体的なコストを計算してくれる
https://yakst.github.io/unofficialmysqlguide-ja/explain.html
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | SIMPLE | users | NULL | ALL | NULL | NULL | NULL | NULL | 118 | 33.33 | Using where |
```json
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "29.60" <- 実行時コスト
},
"table": {
"table_name": "users",
"access_type": "ALL",
"rows_examined_per_scan": 118, <- テーブル内の118行全てにアクセス
"rows_produced_per_join": 39,
"filtered": "33.33",
"cost_info": {
"read_cost": "21.73",
"eval_cost": "7.87",
"prefix_cost": "29.60",
"data_read_per_join": "1M"
},
"used_columns": [
],
"attached_condition":
}
}
}
```