---
# System prepended metadata

title: '今週何知った？ week:33'

---

# 今週何知った？ 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": 
    }
  }
}
```