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