Recommended
PDF
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
PDF
BigQuery勉強会 Standard SQL Dialect
PPTX
PDF
PPT
PDF
JAZUG #26 AKS backup with Velero
PDF
PDF
PDF
[db tech showcase Tokyo 2018] #dbts2018 #D27 『Verticaの進化が止まらない! 機械学習、データレイク、処...
PPTX
PDF
Oracleの実行計画を読んでみよう! #dbts2017
PDF
PDF
PDF
周辺知識から理解するMySQL の GIS機能 ~ClubMySQL #4
PDF
PDF
第8回 大規模データを用いたデータフレーム操作実習(2)
PDF
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...
PDF
PDF
HistoPyramid Stream Compaction
PDF
PDF
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4
PDF
PDF
PDF
第9回 大規模データを用いたデータフレーム操作実習(3)
KEY
PDF
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
PDF
PDF
PDF
Osc2015北海道 札幌my sql勉強会_波多野_r3
More Related Content
PDF
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
PDF
BigQuery勉強会 Standard SQL Dialect
PPTX
PDF
PPT
PDF
JAZUG #26 AKS backup with Velero
PDF
PDF
What's hot
PDF
[db tech showcase Tokyo 2018] #dbts2018 #D27 『Verticaの進化が止まらない! 機械学習、データレイク、処...
PPTX
PDF
Oracleの実行計画を読んでみよう! #dbts2017
PDF
PDF
PDF
周辺知識から理解するMySQL の GIS機能 ~ClubMySQL #4
PDF
PDF
第8回 大規模データを用いたデータフレーム操作実習(2)
PDF
[db tech showcase Tokyo 2014] L35: 100GB クラスの SGA を眺めてみよう。Oracle Database 12c...
PDF
PDF
HistoPyramid Stream Compaction
PDF
PDF
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4
PDF
PDF
PDF
第9回 大規模データを用いたデータフレーム操作実習(3)
KEY
PDF
Viewers also liked
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
PDF
PDF
PDF
Osc2015北海道 札幌my sql勉強会_波多野_r3
PDF
PDF
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PDF
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
PDF
PDF
PDF
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PDF
PDF
PPT
PPSX
PPS
PDF
Nettet som en del av mediemiksen - Google Think 2014 - Espen Grimmert
PDF
PPT
Бренд-комьюнити от Sitko.Ru (Brand-Community of Sitko.Ru)
PDF
Carrot City: The impact of food on the design of cities and buildings - Mark ...
Similar to MySQL勉強会 インデックス編.2013 08-02
PDF
PDF
PDF
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
PDF
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
PDF
JPUGしくみ+アプリケーション勉強会(第20回)
PDF
KEY
PPTX
PPT
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
PPT
Online schema change_for_mysql_casual
PDF
PDF
PPTX
Google fusion tables api v1.0 tips
PDF
PDF
PDF
PDF
PPT
Online schema change in mysql casual #1(2010/12/11)
PPT
Online schema change in mysql casual #1(2010/12/11)
More from CROOZ, inc.
PDF
全世界135か国に配信したレーシングゲーム『ACR DRIFT』の制作秘話と技術基盤の構築について
PDF
PDF
CROOZ SHOPLIST株式会社 エンジニア向け会社説明資料
PDF
PDF
PPTX
PDF
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
PPTX
PPTX
PDF
モバイルゲームの全世界オンライン対戦を実現する方法を考察する
PDF
第7回テックヒルズ『Game Engines!!~どのゲームエンジンを選ぶ?~』資料
PDF
MySQL勉強会 リプリケーション編.2013 08-09
PDF
PDF
PDF
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
MySQL勉強会 インデックス編.2013 08-02 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. mysql>
UPDATE
prize_history
SET
del_flg
=
1
WHERE
prize_id
=
14
AND
ctime
BETWEEN
'2013-05-18
00:00:00'
AND
'2013-05-24
00:00:00';
実行するSQL
イベント報酬ID
イベント開始日時
イベント終了日時
17. 18. 19. 20. 21. mysql>
EXPLAIN
SELECT
*
FROM
prize_history
WHERE
prize_id
=
14
AND
ctime
BETWEEN
'2013-05-18
00:00:00'
AND
'2013-05-24
00:00:00'G;
***************************
1.
row
***************************
id:
1
select_type:
SIMPLE
table:
prize_history
type:
ALL
possible_keys:
NULL
key:
NULL
key_len:
NULL
ref:
NULL
rows:
2233733
Extra:
Using
where
【クエリーのタイプ】:全件検索
【使用されているインデックス】:
インデックスが使われていない
【検索行数】:テーブル全行数
【追加情報(処理方法)】:Using temoraryと、 Using filesortは要注意、それぞ
れ、一時書き出し、ファイルソートが発生していてクエリーが遅くなる傾向がある
22. SHOW
INDEX
FROM
prize_history;
+----------------------+------------+----------+--------------+-----------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
|
Table
|
Non_unique
|
Key_name
|
Seq_in_index
|
Column_name
|
Collation
|
Cardinality
|
Sub_part
|
Packed
|
Null
|
Index_type
|
Comment
|
Index_comment
|
+----------------------+------------+----------+--------------+-----------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
|
prize_history
|
0
|
PRIMARY
|
1
|
prize_history_id
|
A
|
2235476
|
NULL
|
NULL
|
|
BTREE
|
|
|
|
prize_history
|
1
|
user_id
|
1
|
user_id
|
A
|
2235476
|
NULL
|
NULL
|
|
BTREE
|
|
|
|
prize_history
|
1
|
user_id
|
2
|
receive_flg
|
A
|
2235476
|
NULL
|
NULL
|
|
BTREE
|
|
|
|
prize_history
|
1
|
user_id
|
3
|
prize_id
|
A
|
2235476
|
NULL
|
NULL
|
|
BTREE
|
|
|
+----------------------+------------+----------+--------------+-----------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
4
rows
in
set
(5.73
sec)
インデックスを確認する
ctimeのインデックスがない
インデックス名
インデックス種別
対象カラム
プライマリキー
プライマリキー
prize_history
user_id インデックス
user_id,receive_flg,prize_id
23. ALTER
TABLE
prize_history
ADD
KEY
prize_id
(prize_id,ctime);
EXPLAIN
SELECT
*
FROM
prize_history
WHERE
prize_id
=
14
AND
ctime
BETWEEN
'2013-05-18
00:00:00'
AND
'2013-05-24
00:00:00'G;
***************************
1.
row
***************************
id:
1
select_type:
SIMPLE
table:
prize_history
type:
range
possible_keys:
prize_id
key:
prize_id
key_len:
12
ref:
NULL
rows:
186246
Extra:
Using
where;
インデックス追加
24. ■
BEFORE
mysql>
SELECT
SQL_NO_CACHE
count(*)
FROM
prize_history
WHERE
prize_id
=
14
AND
ctime
BETWEEN
'2013-05-18
00:00:00'
AND
'2013-05-24
00:00:00';
+----------+
|
count(*)
|
+----------+
|
86399
|
+----------+
1
row
in
set
(3.62
sec)
■
AFTER
mysql>
SELECT
SQL_NO_CACHE
count(*)
FROM
prize_history
WHERE
prize_id
=
14
AND
ctime
BETWEEN
'2013-05-18
00:00:00'
AND
'2013-05-24
00:00:00';
+----------+
|
count(*)
|
+----------+
|
86399
|
+----------+
1
row
in
set
(0.06
sec)
BEFORE/AFTER
60xFAST
25. 26. 27. 28. SELECT
prize_history_id
FROM
prize_history
WHERE
ctime
<
'2013-05-18
00:00:00'
ORDER
BY
prize_history_id
DESC
LIMIT
1;
+-----------------------+
|
prize_history_id
|
+-----------------------+
|
2008199
|
+-----------------------+
イベント開催日時
※バックアップサーバーで実行
29. SELECT
prize_history_id
FROM
prize_history
WHERE
ctime
<
'2013-05-24
00:00:00'
ORDER
BY
prize_history_id
DESC
LIMIT
1;
+-----------------------+
|
prize_history_id
|
+-----------------------+
|
2094599
|
+-----------------------+
イベント終了日時
※バックアップサーバーで実行
30. mysql>
EXPLAIN
SELECT
*
FROM
prize_history
WHERE
prize_id
=
14
AND
prize_history_id
BETWEEN
2008199
AND
2094599G;
***************************
1.
row
***************************
id:
1
select_type:
SIMPLE
table:
prize_history
type:
range
possible_keys:
PRIMARY
key:
PRIMARY
key_len:
8
ref:
NULL
rows:
174524
Extra:
Using
where
期間をプライマリキーに
置き換えてEXPLAIN
31. 32. 33. 34. 35. 36. SELECT
CONCAT(
'UPDATE prize_history
',
'SET
del_flg
=
1
',
'WHERE
prize_history_id
=',
prize_history_id,';'
)
FROM
prize_history
WHERE
prize_id
=
14
AND
prize_history_id
BETWEEN
2008199
AND
2094599;
UPDATE文作成
※バックアップサーバーで実行
37. バックアップ作成
SELECT
CONCAT(
'UPDATE prize_history
',
'SET
del_flg
=
',del_flg,'
',
'WHERE
prize_history_id
=',
prize_history_id,';'
)
FROM
prize_history
WHERE
prize_id
=
14
AND
prize_history_id
BETWEEN
2008199
AND
2094599;
※バックアップサーバーで実行
38. 39. 40. 41. 42. 43. 44. 45. テスト用テーブル
・サンプルのデータは10万件
カラム名
型
id unsinged int(11)
A unsinged int(11)
B varchar(255)
C unsinged int(11)
インデックス
名
インデックス
種別
対象カラム
pkey プライマリキー
Id
index_A インデックス
A
index_B インデックス
B
index_C インデックス
C
index_A_B_
C
インデックス
A,B,C
46. 複合インデックス
が使える場合
• SELECT * FROM test WHERE A=1 and B=2 and C=3
• SELECT * FROM test WHERE A=1 and B=2
• SELECT * FROM test WHERE A=1
※ INDEX index_a_b_c(A,B,C)の場合
47. 複合インデックス
が使えない場合
• SELECT * FROM test WHERE B=2 and C=3
• SELECT * FROM test WHERE A=1 and C=3
• SELECT * FROM test WHERE B=2
※ INDEX index_a_b_c(A,B,C)の場合
48. 49. 50. 51. カバリングインデックスの例
• SELECT A,B,C FROM test WHERE A=1 and B=2 and C=3
• SELECT A FROM test WHERE A=1 and B=2
• SELECT A,B,C FROM test WHERE A=1
※ INDEX index_a_b_c(A,B,C)の場合
52. カバリングインデックス
EXPLAIN
EXPLAIN
SELECT
A,B,C
FROM
test
WHERE
A=757
AND
b='0.ZYc2FHB0kpo'
G;
***************************
1.
row
***************************
id:
1
select_type:
SIMPLE
table:
test
type:
ref
possible_keys:
index_A,index_B,index_A_B_C
key:
index_A_B_C
key_len:
771
ref:
const,const
rows:
1
Extra:
Using
where;
Using
index
Indexを使っているという
意味ではない。Index内
のデータを使用している
という意味(カバリングイ
ンデックス)
53. 54. 55. 56. 57. 58. 59. 60. 61.