Submit Search
Upload
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
•
7 likes
•
6,377 views
kyon mm
Follow
おおくの部分を口頭で説明したので、メモ書き的なスライドになっております。 http://connpass.com/event/10849/ での発表資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 38
Download now
Download to read offline
Recommended
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
Droid kaigiプレゼン
Droid kaigiプレゼン
Suguru Oho
データモデルは時空を越える
データモデルは時空を越える
terahide
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Fumihiko Shiroyama
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
Shinichi Kozake
Java web application testing
Java web application testing
Tokuhiro Matsuno
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
Recommended
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
Droid kaigiプレゼン
Droid kaigiプレゼン
Suguru Oho
データモデルは時空を越える
データモデルは時空を越える
terahide
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Fumihiko Shiroyama
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
Shinichi Kozake
Java web application testing
Java web application testing
Tokuhiro Matsuno
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
Takahiro YAMADA
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Yuki Anzai
マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]
YUKI YAMAGUCHI
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
bitter_fox
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016
kyon mm
Kaizen process with test #hackt
Kaizen process with test #hackt
kyon mm
ザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000dai
kyon mm
ICST2015 GUI Testingの紹介 #SIGSTJ
ICST2015 GUI Testingの紹介 #SIGSTJ
kyon mm
焦らず急いでの意味
焦らず急いでの意味
kyon mm
Sta introduction in_kyoto #devkan
Sta introduction in_kyoto #devkan
kyon mm
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
kyon mm
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
kyon mm
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
kyon mm
Gradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggug
kyon mm
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
Groovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjug
kyon mm
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
kyon mm
@kyon_mmの書籍の読み方 #AsianAA
@kyon_mmの書籍の読み方 #AsianAA
kyon mm
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
kyon mm
GradleのREPLプラグイン紹介 #jggug
GradleのREPLプラグイン紹介 #jggug
kyon mm
More Related Content
Viewers also liked
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
Takahiro YAMADA
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Yuki Anzai
マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]
YUKI YAMAGUCHI
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
bitter_fox
Viewers also liked
(6)
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
マテリアルデザインを用いたデザインリニューアル [フリル編]
マテリアルデザインを用いたデザインリニューアル [フリル編]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
徹底解説!Project Lambdaのすべて[JJUG CCC 2013 Fall H-2]
More from kyon mm
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016
kyon mm
Kaizen process with test #hackt
Kaizen process with test #hackt
kyon mm
ザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000dai
kyon mm
ICST2015 GUI Testingの紹介 #SIGSTJ
ICST2015 GUI Testingの紹介 #SIGSTJ
kyon mm
焦らず急いでの意味
焦らず急いでの意味
kyon mm
Sta introduction in_kyoto #devkan
Sta introduction in_kyoto #devkan
kyon mm
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
kyon mm
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
kyon mm
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
kyon mm
Gradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggug
kyon mm
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
Groovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjug
kyon mm
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
kyon mm
@kyon_mmの書籍の読み方 #AsianAA
@kyon_mmの書籍の読み方 #AsianAA
kyon mm
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
kyon mm
GradleのREPLプラグイン紹介 #jggug
GradleのREPLプラグイン紹介 #jggug
kyon mm
契る意味 #pykonjp2014
契る意味 #pykonjp2014
kyon mm
いつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYA
kyon mm
Test Retrospective #kyon_kao_wedding in Tokyo
Test Retrospective #kyon_kao_wedding in Tokyo
kyon mm
ソフトウェア開発を勉強し始めて3年間でやったこと~After~ #devsumi
ソフトウェア開発を勉強し始めて3年間でやったこと~After~ #devsumi
kyon mm
More from kyon mm
(20)
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016
Kaizen process with test #hackt
Kaizen process with test #hackt
ザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000dai
ICST2015 GUI Testingの紹介 #SIGSTJ
ICST2015 GUI Testingの紹介 #SIGSTJ
焦らず急いでの意味
焦らず急いでの意味
Sta introduction in_kyoto #devkan
Sta introduction in_kyoto #devkan
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
Gradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggug
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
Groovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjug
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
@kyon_mmの書籍の読み方 #AsianAA
@kyon_mmの書籍の読み方 #AsianAA
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
JenkinsとGitで実装するGatewayCheckIn Pattern #AsianAA
GradleのREPLプラグイン紹介 #jggug
GradleのREPLプラグイン紹介 #jggug
契る意味 #pykonjp2014
契る意味 #pykonjp2014
いつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYA
Test Retrospective #kyon_kao_wedding in Tokyo
Test Retrospective #kyon_kao_wedding in Tokyo
ソフトウェア開発を勉強し始めて3年間でやったこと~After~ #devsumi
ソフトウェア開発を勉強し始めて3年間でやったこと~After~ #devsumi
Recently uploaded
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Recently uploaded
(9)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
出来るチューリング完全!SQLでもいろいろ出来る! #syoboben
1.
kyon_mm #syoboben 2015/02/21 できるチューリング完全! SQLでもいろいろできる
2.
kyon_mm Test Architect TDD/BDD Expert 27
years old TDD/BDD超入門 STA 15章 Self Introduction
3.
4.
某「さっき会ったのがしょぼちむさんですよ!」
5.
某「さっき会ったのがしょぼちむさんですよ!」 きょん「まぢで!」
6.
某「さっき会ったのがしょぼちむさんですよ!」 きょん「まぢで!」 某「来月Oracleとか、データモデル設計につい て勉強会あるんですよ」
7.
某「さっき会ったのがしょぼちむさんですよ!」 きょん「まぢで!」 某「来月Oracleとか、データモデル設計につい て勉強会あるんですよ」 きょん「まぢで!でもRDBわからん。。。」
8.
某「さっき会ったのがしょぼちむさんですよ!」 きょん「まぢで!」 某「来月Oracleとか、データモデル設計につい て勉強会あるんですよ」 きょん「まぢで!でもRDBわからん。。。」 某「だいたいなんでもいいらしいよ」
9.
某「さっき会ったのがしょぼちむさんですよ!」 きょん「まぢで!」 某「来月Oracleとか、データモデル設計につい て勉強会あるんですよ」 きょん「まぢで!でもRDBわからん。。。」 某「だいたいなんでもいいらしいよ」 きょん「あー。そうか。なんでもいいのか。よ し、チューリング完全について話そう。」
10.
idea… 関係代数、定理、証明の話 デッドロックをモデル検査する 話 データモデルのカテゴリについ て
11.
Today! Insert Performance!
12.
Agenda Problem on Testing, Migrating SQL Conclusion
13.
Problem on Testing, Migrating
14.
Situation テストのために大量のレコード が必要だ。時間がすごいかか る。。。 テーブルを変更しなければいけ ない。データ移行に時間がすご いかかる。。。
15.
Data Create Tool Factory
Girl,etc はモデル ベースでやりやすい部分もある が、実行速度についてはあまり 気にされていない。
16.
Tool MyBatis,etc は版管理のサポー トはしてくれるけれど、どう行 うかについてのサポートはとて も薄い。 実行時間が肥大化する問題につ いては解決しない。
17.
Example 3億件以上のテストデータを用 意して、アプリケーションのパ フォーマンスを計測したい。
18.
Agenda Problem on Testing, Migrating SQL Conclusion
19.
SQL
20.
Stored Procedure RDBMSで高速化といえば!!! 書きたくない筆頭。 2時間くらいかかる。
21.
Bulk Insert INSERTでの高速化といえば!! ORM経由みたいなので楽に実行 出来る事もままある。 だいたい数十分で終わる。
22.
-kyon_mm 僕が耐えられるレスポンス時間は 20分が限度だ
23.
Recursive CTE
24.
CTE 1クエリ内で何度も問い合わせ をできる再帰的に扱える機能 他の方法と違って基本的にはテ ストデータ読み込みにIOが発生 しない感じになるので、爆速。 10分前後で完了する。
25.
CTE WITH Hoge (xxx,yyy)
AS (SELECT aaa, bbb from …) SELECT xxx, count(yyy) FROM Hoge …
26.
CTE 変数のグループ名(変数名1, 変 数名2, ...)
AS (SELECT 変数名1の値, 変数名 2の値 ...)
27.
Recursive CTE WITH Hoge
(xxx,yyy) AS (SELECT aaa, bbb from … UNION ALL SELECT …) SELECT xxx, count(yyy) FROM Hoge …
28.
Recursive CTE WITH Hoge
(xxx,yyy) AS ( [初期化を書く部分] UNION ALL [再帰を書く部分]) SELECT [最終的な出力部分] WITHで定義する共通表(ex. Hoge)はいくつでもつくれる
29.
In Shortly 再帰CTEによって繰り返しが表 現できるようになったことで、 Whereで条件分岐ができるし、 SQLはチューリング完全であ る!
30.
In Shortly 基本的に再帰しやすいデータが やりやすいので、ある規則にし たがったデータの作成に使いや すい。
31.
SQL http://bleis- tift.hatenablog.com/entry/ 20100201/1265035070
32.
CTE http://www.slideshare.net/ odashinsuke/cte-12545515
33.
Brain f*ck http://bleis- tift.hatenablog.com/entry/ 20090610/1244615237
34.
Calculator http://bleis- tift.hatenablog.com/entry/ 20090610/1244560784
35.
Proof http://assets.en.oreilly.com/1/event/ 27/High%20Performance%20SQL%20with %20PostgreSQL%20Presentation.pdf http://blog.coelho.net/database/ 2013/08/17/turing-sql-1/
36.
Agenda Problem on Testing, Migrating SQL Conclusion
37.
Conclusion
38.
Conclusion RDBのデータ作成を高速に行い たくなったら再帰CTEを思い出 せ! SQLでいろいろ出来ると楽しい よ。
Download now