ݕࡧͱINDEX
w 8)&3&۟Ͱ͏
w (3061#:۟Ͱ͏
w 03%&3#:۟Ͱ͏
Slide 32
Slide 32 text
ݕࡧͱINDEX
w 8)&3&۟Ͱ͏
w (3061#:۟Ͱ͏
w 03%&3#:۟Ͱ͏
ݕࡧશൠͰ͏
Slide 33
Slide 33 text
ݕࡧͱINDEX
w 8)&3&۟Ͱ͏
w (3061#:۟Ͱ͏
w 03%&3#:۟Ͱ͏
ݕࡧશൠͰ͏
͔͠͠.Z42-ͭͷ5"#-&Ͱ
͔ͭ͠*/%&9ΛΘͳ͍
Slide 34
Slide 34 text
ݕࡧͱINDEX
*/%&9ΛޮՌతʹ͏ʹ
w ॏෳ͕গͳ͍΄͏͕ྑ͍
w ݁Ռ͕গͳ͍΄͏͕ྑ͍
Slide 35
Slide 35 text
ݕࡧͱINDEX
*/%&9ΛޮՌతʹ͏ʹ
w ॏෳ͕গͳ͍΄͏͕ྑ͍
w ݁Ռ͕গͳ͍΄͏͕ྑ͍
6OJRVF͕ཧ
ॏෳ͕ଟ͍߹ɺ*/%&9ͷҙຯ͕ബΕΔ
Α͋͘Δͷ%&-&5&@'-"(
Slide 36
Slide 36 text
ݕࡧͱINDEX
*/%&9ΛޮՌతʹ͏ʹ
w ॏෳ͕গͳ͍΄͏͕ྑ͍
w ݁Ռ͕গͳ͍΄͏͕ྑ͍
ࢀরͷ5"#-&ͷશͯΛදࣔ͢ΔͳΒݩ͔Βશ
෦ݟͨ΄͏͕ྑ͍
શମͷʙ·Ͱ͕*/%&9ར༻ͷ҆
Slide 37
Slide 37 text
ݕࡧͱINDEX
*/%&9Λ੍͢ΔऀݕࡧΛ੍͢Δ
Slide 38
Slide 38 text
ݕࡧͱINDEX
࣮ߦܭըΛݟΔ
Slide 39
Slide 39 text
ݕࡧͱINDEX
&91-"*/Ͱॏཁͳ͜ͱ
w ఆ͢ΔϨίʔυʹ࣮σʔλΛ͋ΘͤΔ
w ౷ܭใΛ࠷৽ʹ͢Δ
w ࣮ߦ݁Ռ͕ਖ਼͍͜͠ͱΛ֬ೝ͢Δ
Slide 40
Slide 40 text
ݕࡧͱINDEX
&91-"*/Ͱॏཁͳ͜ͱ
w ఆ͢ΔϨίʔυʹ࣮σʔλΛ͋ΘͤΔ
w ౷ܭใΛ࠷৽ʹ͢Δ
w ࣮ߦ݁Ռ͕ਖ਼͍͜͠ͱΛ֬ೝ͢Δ
σʔλྔʹΑ࣮ͬͯߦܭը͕มΘΔ͜ͱଟ͍
࣮ࡍΑΓগͳ͍σʔλͰ֬ೝͯ͠ҙຯ͕ແ͍
Slide 41
Slide 41 text
ݕࡧͱINDEX
&91-"*/Ͱॏཁͳ͜ͱ
w ఆ͢ΔϨίʔυʹ࣮σʔλΛ͋ΘͤΔ
w ౷ܭใΛ࠷৽ʹ͢Δ
w ࣮ߦ݁Ռ͕ਖ਼͍͜͠ͱΛ֬ೝ͢Δ
σʔλʹେྔͷՃɾআɾมߋ͕͋Δͱ౷ܭใ͕ෆਖ਼֬ʹͳΔ
"/"-:;&5"#-&Ͱ౷ܭใΛߋ৽͔ͯ͠Β&91-"*/ʂʂ
Slide 42
Slide 42 text
ݕࡧͱINDEX
&91-"*/Ͱॏཁͳ͜ͱ
w ఆ͢ΔϨίʔυʹ࣮σʔλΛ͋ΘͤΔ
w ౷ܭใΛ࠷৽ʹ͢Δ
w ࣮ߦ݁Ռ͕ਖ਼͍͜͠ͱΛ֬ೝ͢Δ
࣮ߦܭըͰߴԽ࣮ͯ͠ߦ݁Ռ͕มΘΔͱҙຯ͕ແ͍
࠷ऴతʹຊ൪Ͱ֬ೝ͔ͯ͠ΒϦϦʔε͢Δ͜ͱ
Slide 43
Slide 43 text
ݕࡧͱINDEX
&91-"*/ͷ·ͱΊ
w ެࣜυΩϡϝϯτΛಡ͏ UZQFͳͲछྨ͕ࢁ͋Δ
IUUQTEFWNZTRMDPNEPDSFGNBOKBFYQMBJOPVUQVUIUNM
IUUQTXXXQPTUHSFTRMKQEPDVNFOUIUNMTRMFYQMBJOIUNM
w ૉৼΓେࣄ
Slide 44
Slide 44 text
ݕࡧͱINDEX
.Z42-8PSLCFODI
QHBENJO
Slide 45
Slide 45 text
࣮ߦܭը
CREATE TABLE `demo`.`users` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '',
`name` VARCHAR(45) NOT NULL COMMENT '',
`age` INT NOT NULL COMMENT '',
`created` DATETIME NOT NULL DEFAULT NOW () COMMENT '',
PRIMARY KEY (`id`) COMMENT ''
);
——શ݅Λબ͢ΔͷͰςʔϒϧεΩϟϯ
SELECT * FROM demo.users;
——PRIMARY KEYʢINDEXʣΛར༻ͨ͠ྫ
SELECT * FROM demo.users WHERE id > 100;
——INDEX͕ແ͍ͷͰςʔϒϧεΩϟϯ
SELECT * FROM demo.users WHERE age > 20;
Slide 46
Slide 46 text
MySQL
Slide 47
Slide 47 text
MySQL
Slide 48
Slide 48 text
MySQL
αϒΫΤϦͱ૬ؔαϒΫΤϦ
Slide 49
Slide 49 text
αϒΫΤϦ
—— INDEXͱͯ͠PRIMARY KEY͕ޮ͍͍ͯΔ
SELECT * FROM users WHERE id < 1000 AND id > 800
—— 1ճ͔࣮͠ߦ͞Εͳ͍
SELECT
*
FROM
(SELECT
*
FROM
users
WHERE
id < 1000 AND id > 800) AS dummy
Slide 50
Slide 50 text
MySQL
Slide 51
Slide 51 text
૬ؔαϒΫΤϦ
——͍૬ؔαϒΫΤϦ
SELECT
*
FROM
users
WHERE
age IN (SELECT
age
FROM
users
WHERE
id BETWEEN 10 AND 100000)
Slide 52
Slide 52 text
MySQL
Slide 53
Slide 53 text
MySQL
.Z42-͔Β."5&3*"-*;&%ʹ
มΘΓɺ+0*/ͷΑ͏ͳڍಈʹͳͬͨ
ੲΑΓૣ͘ͳͬͨ
Slide 54
Slide 54 text
૬ؔαϒΫΤϦ
——INDEX͕ར༻Ͱ͖Ε૬ؔαϒΫΤϦͰ͍
SELECT
*
FROM
users
WHERE
created = '2016-02-27 04:31:32'
AND id IN (SELECT
id
FROM
users
WHERE
id BETWEEN 10 AND 100000)
Slide 55
Slide 55 text
MySQL
Slide 56
Slide 56 text
MySQL
૬ؔαϒΫΤϦ͍
߹͕ଟ͍
Slide 57
Slide 57 text
MySQL
૬ؔαϒΫΤϦ͍
ˣ
+0*/ʹॻ͖͑Δ
Slide 58
Slide 58 text
JOIN
SELECT
*
FROM
users
INNER JOIN
users AS tmp ON tmp.id = users.id
AND tmp.id BETWEEN 10 AND 100000
WHERE
users.created = '2016-02-27 04:31:32'
Slide 59
Slide 59 text
MySQL
Slide 60
Slide 60 text
MySQL
+0*/ֻ͚ࢉ
Slide 61
Slide 61 text
MySQL
+0*/ֻ͚ࢉ
ˣ
ߦ☓ߦߦ
Slide 62
Slide 62 text
MySQL
.Z42-ʹ
+0*/ͷΞϧΰϦζϜҰ͔ͭ͠ͳ͍
Slide 63
Slide 63 text
MySQL
.Z42-ʹ
+0*/ͷΞϧΰϦζϜҰ͔ͭ͠ͳ͍
ܾͯ͠ಘҙͳΘ͚Ͱແ͍
+0*/ϋΠίετͳΫΤϦ
Slide 64
Slide 64 text
MySQL
w ग़དྷΔ͚ͩখ͔ͯ͘͞͠Β+0*/
w ෆཁͳ+0*/ආ͚Δ
w */%&9Λར༻ͨ͠+0*/Λ͢Δ
ෳར༻ͨ͠INDEX
CREATE TABLE public.users (
id integer NOT NULL DEFAULT nextval('users_id_seq'::regclass),
name text NOT NULL,
age integer NOT NULL,
created timestamp without time zone NOT NULL DEFAULT now(),
CONSTRAINT users_pkey PRIMARY KEY (id));
CREATE INDEX users_created_idx
ON public.users USING tree (created);
——idͱcreatedͷINDEXΛར༻͢Δ
SELECT
*
FROM
users
WHERE
id < 100
AND created < '2016-02-27 05:41:28';
Slide 75
Slide 75 text
PostgreSQL
Slide 76
Slide 76 text
PostgreSQL
Slide 77
Slide 77 text
ࣜINDEX
——ࣜINDEXΛ࡞
CREATE INDEX test_idx ON users (substr(name,10,12));
——ࣜͷ݁ՌͰINDEX͕ޮ͘
SELECT name FROM users WHERE substr(name,10,12) = '10'
Slide 78
Slide 78 text
PostgreSQL
Slide 79
Slide 79 text
PostgreSQL
Slide 80
Slide 80 text
૬ؔαϒΫΤϦ
SELECT
*
FROM
users
WHERE
age IN (SELECT
age
FROM
users
WHERE
id BETWEEN 10 AND 100000)
Slide 81
Slide 81 text
PostgreSQL
Slide 82
Slide 82 text
PostgreSQL
Slide 83
Slide 83 text
PostgreSQL
ΦϓςΟϚΠβ͕
αϒΫΤϦΛ+0*/ʹॻ͖͑ͯΔ
Slide 84
Slide 84 text
૬ؔαϒΫΤϦ
——INDEXΛར༻ͨ͠αϒΫΤϦ
SELECT
*
FROM
users
WHERE
id IN (SELECT
id
FROM
users
WHERE
id BETWEEN 10 AND 100000)
Slide 85
Slide 85 text
PostgreSQL
ΦϓςΟϚΠβ͕+0*/ʹʢ͈́
Slide 86
Slide 86 text
૬ؔαϒΫΤϦ
——σϞͰINDEXΛͬͯ͘Εͳ͍ͷͰINDEXΛ༏ઌతʹར༻͢ΔΑ͏ʹࢦఆ
SET ENABLE_SEQSCAN=OFF;
SELECT
*
FROM
users
WHERE
id IN (SELECT
id
FROM
users
WHERE
id BETWEEN 10 AND 100000)
Slide 87
Slide 87 text
PostgreSQL
Slide 88
Slide 88 text
PostgreSQL
Slide 89
Slide 89 text
PostgreSQL
1PTUHSF42-ͷ૬ؔαϒΫΤϦ
ൺֱత͍
Slide 90
Slide 90 text
PostgreSQL
ෳࡶͳूܭಘҙ
ˣ
Ͱ3%#ͷجຊ.Z42-ͱҰॹ
Slide 91
Slide 91 text
͋͐͡Μͩ
̍ɹࣗݾհ
̎ɹݕࡧͱINDEX
̏ɹਖ਼نԽ
̐ɹWindowؔ
̑ɹ·ͱΊ
Slide 92
Slide 92 text
ਖ਼نԽ
w σʔλফͤͳ͍
w σʔλΛมߋͰ͖ͳ͍
w σʔλͷՃͰରԠ
Slide 93
Slide 93 text
ਖ਼نԽ
σʔλͷෆ߹Ͱ·ͳ͍ͨΊʹ
Slide 94
Slide 94 text
ਖ਼نԽ
σʔλͷෆ߹Ͱ·ͳ͍ͨΊʹ
ˣ
ਖ਼نԽ
Slide 95
Slide 95 text
ਖ਼نԽ
ΞϯέʔτϑΥʔϜ
Slide 96
Slide 96 text
JE ໊લ ճ
TPOF IPHF
40/& GVHB
TPVEBJ GPP
UBLFUPNP CBS
Slide 97
Slide 97 text
ਖ਼نԽ
ΫϥΠΞϯτʮ͜͜ʹ༷͕͋Δ͡ΌΖʁʯ
ʈТʈ
㱭ʮҰճʯ㱬
Slide 98
Slide 98 text
ਖ਼نԽ
ΫϥΠΞϯτʮ͜͜ʹ༷͕͋Δ͡ΌΖʁʯ
͜ΕΛ
ʈТʈ
㲇㱭㱬㲇
Slide 99
Slide 99 text
ਖ਼نԽ
ΫϥΠΞϯτʮ͜͜ʹ༷͕͋Δ͡ΌΖʁʯ
ʈТʈ
㱭ʮෳճʯ㱬
Slide 100
Slide 100 text
ਖ਼نԽ
ରԠྫ
w $47ʹͯ͠ೖΕΔ
w ΧϥϜΛ૿ͯ͠ೖΕΔ
w +40/ΛUFYUͰೖΕΔˡ/&8ʂ
Slide 101
Slide 101 text
ਖ਼نԽ
ରԠྫ
w $47ʹͯ͠ೖΕΔ
w ΧϥϜΛ૿ͯ͠ೖΕΔ
w +40/ΛUFYUͰೖΕΔˡ/&8ʂ
Slide 102
Slide 102 text
ਖ਼نԽ
ରԠྫ
w $47ʹͯ͠ೖΕΔ
w ΧϥϜΛ૿ͯ͠ೖΕΔ
w +40/ΛUFYUͰೖΕΔˡ/&8ʂ
Slide 103
Slide 103 text
ਖ਼نԽ
ରԠྫ
w $47ʹͯ͠ೖΕΔ
w ΧϥϜΛ૿ͯ͠ೖΕΔ
w +40/ΛUFYUͰೖΕΔˡ/&8ʂ
શ෦42-Ξϯνύλʔϯʂ
Slide 104
Slide 104 text
JE OBNF
TPOF
40/&
TPVEBJ
UBLFUPNP
JE ࣭
࣭̍
࣭̎
࣭̏
࣭̐
ճऀ@JE ࣭@JE ճ ճ
IPHF
GVHB
GPP
CBS
ճऀ ࣭
ճ
࣮ࡍͷSQL
SELECT
to_char(
sum(“ച্"),'FM999,999,999'
) AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY “ച্" ORDER BY "ച্"
Slide 112
Slide 112 text
࣮ࡍͷSQL
SELECT
to_char(
sum(“ച্"),'FM999,999,999'
) AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY “ച্" ORDER BY "ച্"
Slide 113
Slide 113 text
࣮ࡍͷSQL
SELECT
to_char(
sum(“ച্"),'FM999,999,999'
) AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY “ച্" ORDER BY "ച্"
ܻ۠ΓͰΧϯϚΛೖΕΔ
Slide 114
Slide 114 text
ผച্ ച্
ɿ
ɿ
ɿ
ɿ
Slide 115
Slide 115 text
લͱͷࠩΛग़͍ͨ͠
Windowؔ
Slide 116
Slide 116 text
લͱͷࠩΛग़͍ͨ͠
ˣ
MBH
Λͬͯूܭ͢Δ
Windowؔ
Slide 117
Slide 117 text
࣮ࡍͷSQL
SELECT
*
, lag("ผച্") OVER (ORDER BY "ച্")AS લച্
FROM
(SELECT
to_char(sum("ച্"),'FM999,999,999') AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY "ച্") AS "ूܭ"
Slide 118
Slide 118 text
࣮ࡍͷSQL
SELECT
*
, lag("ผച্") OVER (ORDER BY "ച্")AS લച্
FROM
(SELECT
to_char(sum("ച্"),'FM999,999,999') AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY "ച্") AS "ूܭ"
Slide 119
Slide 119 text
࣮ࡍͷSQL
SELECT
*
, lag("ผച্") OVER (ORDER BY "ച্")AS લച্
FROM
(SELECT
to_char(sum("ച্"),'FM999,999,999') AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY "ച্") AS "ूܭ"
ઌ΄ͲͷΫΤϦΛαϒΫΤϦʹ͢Δ
Slide 120
Slide 120 text
࣮ࡍͷSQL
SELECT
*
, lag("ผച্") OVER (ORDER BY "ച্")AS લച্
FROM
(SELECT
to_char(sum("ച্"),'FM999,999,999') AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY "ച্") AS "ूܭ"
8JOEPXؔͷରΛࢦఆ
ઌ΄ͲͷΫΤϦΛαϒΫΤϦʹ͢Δ
Slide 121
Slide 121 text
࣮ࡍͷSQL
SELECT
*
, lag("ผച্") OVER (ORDER BY "ച্")AS લച্
FROM
(SELECT
to_char(sum("ച্"),'FM999,999,999') AS "ผച্"
, "ച্"
FROM "ച্ද"
GROUP BY "ച্") AS "ूܭ"
8JOEPXؔͷରΛࢦఆ
ઌ΄ͲͷΫΤϦΛαϒΫΤϦʹ͢Δ
લߦͷऔಘ͢ΔΧϥϜΛࢦఆ
࣮ફͰϋϚΔ᠘
w ूܭର͕େ͖͘ͳͬͯूܭ࣌ʹϝϞϦʹΒͳ͍
ˠ5FNQPSBSZΛ%JTLʹు͘ͷͰॏ͘ͳΔ
w */%&9͕ແ͘5"#-&εΩϟϯΛ͍ͯͨ͠
ˠςετ࣌σʔλ͕খ͔ͬͨ͞ͷͰʹؾ͔ͮͳ͔ͬͨ
w ϓϩάϥϜ͕ϧʔϓͷ͚ͩΫΤϦΛ͍͛ͯͨ
ˠߦ͕૿͑Δͱϧʔϓճ͕૿͑ͯॏ͘ͳΔ
w ߋ৽͕ܹ͘͠*/%&9ͷஅยԽ͕ൃੜͨ͠
ˠ61%"5&%&-&5&ʹΑͬͯ*/%&9͕அยԽͯ͘͠ͳΔ
Slide 136
Slide 136 text
࣮ફͰϋϚΔ᠘
w ूܭର͕େ͖͘ͳͬͯूܭ࣌ʹϝϞϦʹΒͳ͍
ˠ5FNQPSBSZΛ%JTLʹు͘ͷͰॏ͘ͳΔ
w */%&9͕ແ͘5"#-&εΩϟϯΛ͍ͯͨ͠
ˠςετ࣌σʔλ͕খ͔ͬͨ͞ͷͰʹؾ͔ͮͳ͔ͬͨ
w ϓϩάϥϜ͕ϧʔϓͷ͚ͩΫΤϦΛ͍͛ͯͨ
ˠߦ͕૿͑Δͱϧʔϓճ͕૿͑ͯॏ͘ͳΔ
w ߋ৽͕ܹ͘͠*/%&9ͷஅยԽ͕ൃੜͨ͠
ˠ61%"5&%&-&5&ʹΑͬͯ*/%&9͕அยԽͯ͘͠ͳΔ
࣮ߦܭըΛ
ݟΕΔΑ͏ʹͳΖ͏