SlideShare a Scribd company logo
oracle12cで学ぶ
初めて触れる技術の学び方
OFFSET句の使い方がわからない
そんな時はまず何をするか?
・Googleで検索する
・既に実装されているシステムを参考にする
・oracleのマニュアルをみる
・有識者に聞く
・動かして挙動から推測していく
etc…
Googleで調べると
select ~~
from XXX
order by id
offset 2 rows fetch next 5 rows only;
一歩踏み込んで考えてみる
・nextに対しbeforeもあるの?
・only以外もあるの?
・そもそも構文長すぎない?
offset 2 rows fetch next 5 rows only;
公式マニュアルの構文
SELECT … [OFFSET <行数> ROWS]
FETCH {FIRST|NEXT}
[<行数>|<パーセント> PERCENT]
ROWS {ONLY|WITH TIES};
OFFSET <行数> ROWSなど省略できる部分がある
行数での絞込だけでなく%でも絞り込める
無駄の無い可読性の良いコーディングができる
・%ってどんな仕組みで計算されているの?
さらにもう一歩踏み込んで考えてみる
・抽出件数が小数になった場合は?
・パフォーマンスは良いのか?
実行計画をとってみよう
実行計画ではパフォーマンスだけでなく
関数の仕組みも分かる
SELECT * FROM SAMPLE WHERE ID > 3 ORDER BY RANK
FETCH FIRST 50 PERCENT ROWS ONLY;
ID NAME RANK
6 Cさん 3位
4 Dさん 4位
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5 | 375 | 3 (34)| 00:00:01 |
|* 1 | VIEW | | 5 | 375 | 3 (34)| 00:00:01 |
| 2 | WINDOW SORT | | 5 | 65 | 3 (34)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID BATCHED|SAMPLE | 5 | 65 | 2 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN |PK_SAMPLE | 5 | | 1 (0)| 00:00:01 |
1 - filter(“from$_subquery$_002”.“rowlimit_$$_rownumber”<=
CEIL("from$_subquery$_002"."rowlimit_$$_total"*50/100))
4 - access("ID">3)
%の部分はTOTALを100で割った件数で判定
CEILという関数を使っている
WHERE句で絞った状態から絞りこまれている
単純に覚えるよりも覚えやすく深く理解できる
ONLY;
SELECT * FROM SAMPLE ORDER BY RANK
OFFSET 2 ROWS FETCH NEXT 3 ROWS
実行計画
-----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 7 | 434 | 4 (25)| 00:00:01 |
|* 1 | VIEW | | 7 | 434 | 4 (25)| 00:00:01 |
|* 2 | WINDOW SORT PUSHED RANK| | 7 | 91 | 4 (25)| 00:00:01 |
| 3 | TABLE ACCESS FULL | SAMPLE | 7 | 91 | 3 (0) | 00:00:01 |
1 - filter(“from$_subquery$_002”.“rowlimit_$$_rownumber”<=
CASE WHEN (2>=0) THEN 2 ELSE 0 END +3 AND
"from$_subquery$_002"."rowlimit_$$_rownumber">2)
2 - filter(ROW_NUMBER() OVER ( ORDER BY "SAMPLE"."RANK")<=
CASE WHEN (2>=0) THEN 2 ELSE 0 END +3)
OFFSETを調べる過程で出てきた関数
・CEIL
・CASE WHEN
・ROW NUMBER() OVER…
踏み込めば踏み込むほど広い知識が得られる
ドンドン踏み込んでいこうぜ!!
まとめ
3.関連技術も調べて技術の幅を広げよう
2.原理を知ることで理解度を深めよう
1.公式マニュアルは必ず見よう

More Related Content

Viewers also liked

Ncd 第二回lt会発表資料
Ncd 第二回lt会発表資料Ncd 第二回lt会発表資料
Ncd 第二回lt会発表資料
yumi_chappy
 
海外でお仕事することについてどう思われますか?(森内 達也)
海外でお仕事することについてどう思われますか?(森内 達也)海外でお仕事することについてどう思われますか?(森内 達也)
海外でお仕事することについてどう思われますか?(森内 達也)
yumi_chappy
 
プラスのストロークを身に付けよう
プラスのストロークを身に付けようプラスのストロークを身に付けよう
プラスのストロークを身に付けよう
yumi_chappy
 
Appiumを用いたwebブラウザ自動テスト
Appiumを用いたwebブラウザ自動テストAppiumを用いたwebブラウザ自動テスト
Appiumを用いたwebブラウザ自動テスト
yumi_chappy
 
オフショアテスティングの様々な形態
オフショアテスティングの様々な形態オフショアテスティングの様々な形態
オフショアテスティングの様々な形態
yumi_chappy
 
JSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみるJSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみる
yumi_chappy
 
質の良い睡眠を取る為に
質の良い睡眠を取る為に質の良い睡眠を取る為に
質の良い睡眠を取る為に
yumi_chappy
 
流されるのは楽だが恥をかく
流されるのは楽だが恥をかく流されるのは楽だが恥をかく
流されるのは楽だが恥をかく
yumi_chappy
 
クラスデザインで気をつけたいこと
クラスデザインで気をつけたいことクラスデザインで気をつけたいこと
クラスデザインで気をつけたいこと
yumi_chappy
 
Amglt 20160122 井上
Amglt 20160122 井上Amglt 20160122 井上
Amglt 20160122 井上
yumi_chappy
 
ゆるふわGo言語
ゆるふわGo言語ゆるふわGo言語
ゆるふわGo言語
yumi_chappy
 
読みやすい文章を書くために
読みやすい文章を書くために読みやすい文章を書くために
読みやすい文章を書くために
yumi_chappy
 
これからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですかこれからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですか
yumi_chappy
 
自分の性格をご存知ですか?
自分の性格をご存知ですか?自分の性格をご存知ですか?
自分の性格をご存知ですか?
yumi_chappy
 
ジョハリの窓で自分を知ろう
ジョハリの窓で自分を知ろうジョハリの窓で自分を知ろう
ジョハリの窓で自分を知ろう
yumi_chappy
 

Viewers also liked (20)

ゆるふわぱいそん
ゆるふわぱいそんゆるふわぱいそん
ゆるふわぱいそん
 
Lt 新竹涼太
Lt 新竹涼太Lt 新竹涼太
Lt 新竹涼太
 
Ncd 第二回lt会発表資料
Ncd 第二回lt会発表資料Ncd 第二回lt会発表資料
Ncd 第二回lt会発表資料
 
海外でお仕事することについてどう思われますか?(森内 達也)
海外でお仕事することについてどう思われますか?(森内 達也)海外でお仕事することについてどう思われますか?(森内 達也)
海外でお仕事することについてどう思われますか?(森内 達也)
 
プラスのストロークを身に付けよう
プラスのストロークを身に付けようプラスのストロークを身に付けよう
プラスのストロークを身に付けよう
 
Appiumを用いたwebブラウザ自動テスト
Appiumを用いたwebブラウザ自動テストAppiumを用いたwebブラウザ自動テスト
Appiumを用いたwebブラウザ自動テスト
 
オフショアテスティングの様々な形態
オフショアテスティングの様々な形態オフショアテスティングの様々な形態
オフショアテスティングの様々な形態
 
ゲームから学ぶui ux
ゲームから学ぶui uxゲームから学ぶui ux
ゲームから学ぶui ux
 
はじめよう、firebase
はじめよう、firebaseはじめよう、firebase
はじめよう、firebase
 
JSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみるJSフレームワークのシンタックスを比べてみる
JSフレームワークのシンタックスを比べてみる
 
質の良い睡眠を取る為に
質の良い睡眠を取る為に質の良い睡眠を取る為に
質の良い睡眠を取る為に
 
HRMという考え方
HRMという考え方HRMという考え方
HRMという考え方
 
流されるのは楽だが恥をかく
流されるのは楽だが恥をかく流されるのは楽だが恥をかく
流されるのは楽だが恥をかく
 
クラスデザインで気をつけたいこと
クラスデザインで気をつけたいことクラスデザインで気をつけたいこと
クラスデザインで気をつけたいこと
 
Amglt 20160122 井上
Amglt 20160122 井上Amglt 20160122 井上
Amglt 20160122 井上
 
ゆるふわGo言語
ゆるふわGo言語ゆるふわGo言語
ゆるふわGo言語
 
読みやすい文章を書くために
読みやすい文章を書くために読みやすい文章を書くために
読みやすい文章を書くために
 
これからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですかこれからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですか
 
自分の性格をご存知ですか?
自分の性格をご存知ですか?自分の性格をご存知ですか?
自分の性格をご存知ですか?
 
ジョハリの窓で自分を知ろう
ジョハリの窓で自分を知ろうジョハリの窓で自分を知ろう
ジョハリの窓で自分を知ろう
 

More from yumi_chappy (20)

Why
WhyWhy
Why
 
Itelt vol7 7
Itelt vol7 7Itelt vol7 7
Itelt vol7 7
 
Itelt vol7 1
Itelt vol7 1Itelt vol7 1
Itelt vol7 1
 
Itelt vol7 9
Itelt vol7 9Itelt vol7 9
Itelt vol7 9
 
Itelt vol7 8
Itelt vol7 8Itelt vol7 8
Itelt vol7 8
 
Itelt vol7 6
Itelt vol7 6Itelt vol7 6
Itelt vol7 6
 
Itelt vol7 2
Itelt vol7 2Itelt vol7 2
Itelt vol7 2
 
Itelt vol7 5
Itelt vol7 5Itelt vol7 5
Itelt vol7 5
 
Itelt vol7 4
Itelt vol7 4Itelt vol7 4
Itelt vol7 4
 
Itelt vol7 3
Itelt vol7 3Itelt vol7 3
Itelt vol7 3
 
理想の教育、上から見るか?下から見るか?
理想の教育、上から見るか?下から見るか?理想の教育、上から見るか?下から見るか?
理想の教育、上から見るか?下から見るか?
 
JAWS DAYS Report
JAWS DAYS ReportJAWS DAYS Report
JAWS DAYS Report
 
資料ビジュアル化のススメ
資料ビジュアル化のススメ資料ビジュアル化のススメ
資料ビジュアル化のススメ
 
美ら海水族館から考えるユーザー心理
美ら海水族館から考えるユーザー心理美ら海水族館から考えるユーザー心理
美ら海水族館から考えるユーザー心理
 
IoT製品の魅力
IoT製品の魅力IoT製品の魅力
IoT製品の魅力
 
新しい家族を紹介します~1台と1匹~
新しい家族を紹介します~1台と1匹~新しい家族を紹介します~1台と1匹~
新しい家族を紹介します~1台と1匹~
 
Windows10でword2vecを使ってみた
Windows10でword2vecを使ってみたWindows10でword2vecを使ってみた
Windows10でword2vecを使ってみた
 
色で伝えるイメージ
色で伝えるイメージ色で伝えるイメージ
色で伝えるイメージ
 
バランスを整える
バランスを整えるバランスを整える
バランスを整える
 
脆弱性のふさぎ方
脆弱性のふさぎ方脆弱性のふさぎ方
脆弱性のふさぎ方
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (14)

FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 

Oracle12cで学ぶ、初めて触れる技術の学び方