プログラミング詳しい人、SQLについて教えて!!

1: 2019/06/27(木) 19:50:16.222 ID:Gx/C+win0
SQLが得意で基本的にSQLで集計した結果をプログラムで出力するってやり方をしてきたのだが
最近のフレームワークは生SQLを使わない方向性じゃない?
サブクエリ使えなかったりグループ化出来なかったり不便じゃないの?

4: 2019/06/27(木) 19:52:58.041 ID:lOnuBzbE0
すごく汎用的なものを作ることになったらそうかも知れん

けど、たいていのシステムはやることが限られてるから
SQLで全部やろうが、アプリケーション側でゴニョゴニョしようが
手間はそんなに変わらない気もする

8: 2019/06/27(木) 19:57:42.218 ID:Gx/C+win0
>>4
いや速度が全然違うだろ

29: 2019/06/27(木) 20:43:33.976 ID:lOnuBzbE0
>>8
そのへんはケースバイケースなんじゃね?
必ずしも最速がベストになるとは限らんし

36: 2019/06/27(木) 20:47:19.377 ID:Gx/C+win0
>>29
膨大なデータ量を集計するとなるとやっぱSQLじゃないと使いもんにならないんだよ

5: 2019/06/27(木) 19:53:46.073 ID:MwFP9kzA0
もちろん不便だよ

6: 2019/06/27(木) 19:54:47.324 ID:lVlEV5ZIM
グループやサブクエリ使えなくはないよ
制限キツイだけで

7: 2019/06/27(木) 19:56:48.453 ID:Gx/C+win0
>>6
詳しくお願いします。フレームワークはなんでもいいです

11: 2019/06/27(木) 20:07:29.628 ID:Z2GPufIt0
使い炊きゃ使えばいいじゃん
としか…

13: 2019/06/27(木) 20:11:54.490 ID:Gx/C+win0
>>11
いや時代に取り残されてる感があるじゃん?
俺と同じようなやついてどんなふうに考えてるのか対策してるのか聞きたいじゃん?

12: 2019/06/27(木) 20:07:55.609 ID:Vvbf2pEca
フレームワークのやり方も慣れればやりやすいよ
モデル書いといてマイグレーションすれば面倒なことしなくていいんだから

13: 2019/06/27(木) 20:11:54.490 ID:Gx/C+win0
>>12
同じようなものならそりゃそうだけどさ

14: 2019/06/27(木) 20:16:42.875 ID:Z2GPufIt0
フレームワーク使うようなアプリケーションで複雑なSQLなんて必要になるか?

15: 2019/06/27(木) 20:21:01.423 ID:Gx/C+win0
最近ASP.NET COREのスキャフォールディングに興味もって調べてたら融通効かなすぎて発狂してスレ建て

16: 2019/06/27(木) 20:27:11.979 ID:Gx/C+win0
同じような人居ませんか?

17: 2019/06/27(木) 20:29:05.649 ID:Z2GPufIt0
>>16
だからもうちょい具体的に

18: 2019/06/27(木) 20:32:34.019 ID:Gx/C+win0
>>17
例えば電子カルテシステムを作るとして同じ症状をグループ化して尚且、5年間のうちにそれぞれ月間で症例数をカウントしてチャートを作るとか

20: 2019/06/27(木) 20:36:51.876 ID:Z2GPufIt0
>>18
そんなのフレームワークでやらないだろ

25: 2019/06/27(木) 20:40:42.332 ID:Gx/C+win0
>>20
じゃ何でやんのさ

30: 2019/06/27(木) 20:44:04.936 ID:Z2GPufIt0
>>25
データ取ってくる部分はSQL
表示するのは他に合わせて適当に

33: 2019/06/27(木) 20:45:17.124 ID:Gx/C+win0
>>30
そんなんしてたら言語によっちゃ物凄いモッサリしたもんになるじゃん

38: 2019/06/27(木) 20:50:38.053 ID:Z2GPufIt0
>>33
なんで?
ワークフローじゃできない、SQLで書きたい
と言ったのお前だろ

文句ばかりの無能

42: 2019/06/27(木) 20:56:18.930 ID:Gx/C+win0
>>38
お前らの誰よりも無能なのはわかってる
けどwebシステムは速度を意識しないとユーザーが離れてくだろ
確かにチャート化はワークフローで非同期で徐々に描画してくようにすればいいのかな?

44: 2019/06/27(木) 20:57:07.183 ID:Z2GPufIt0
>>42
だからフレームワーク使わずに書けよ

45: 2019/06/27(木) 20:57:53.225 ID:Gx/C+win0
>>44
へいすんません

19: 2019/06/27(木) 20:34:18.098 ID:15Iwbi2E0
それはSQLを生で書かないってだけで、結局フレームワーク介して操作するだけだからグループ化とかもできる

21: 2019/06/27(木) 20:38:24.675 ID:ZSZD90b7d
SQLファイルに書くよ

22: 2019/06/27(木) 20:38:43.583 ID:Gx/C+win0
from句のサブクエリで5年間のある症例を抽出して
各月毎にグループ化してカウントって仕組みを生SQLじゃない方法でやるとなると何度もデータ抽出しなくちゃならないんじゃね?

23: 2019/06/27(木) 20:40:05.528 ID:ZSZD90b7d
一回で全部取ってくれば

34: 2019/06/27(木) 20:46:20.314 ID:ZSZD90b7d
もっと具体的にどのフレームワークと言語意識して話してるのか言った方が…
>>24
確かに

37: 2019/06/27(木) 20:48:39.792 ID:Gx/C+win0
>>34
いや全般的にさ
いちおASP.NET CORE C#って事にしておきますか

47: 2019/06/27(木) 21:10:08.355 ID:Gx/C+win0
>>26
無駄なVIEWはなくしていきたい
サーチエンジンは一つでいい

27: 2019/06/27(木) 20:42:48.831 ID:6UC4XJpN0
不便だけど生SQLじゃないと抽出できないようなテーブル構成になってるなら
そもそも設計が間違えてる

28: 2019/06/27(木) 20:43:06.831 ID:Vvbf2pEca
>>27
これ

31: 2019/06/27(木) 20:44:17.654 ID:Gx/C+win0
>>27
拡張したことないのかよ

32: 2019/06/27(木) 20:44:53.365 ID:Z2GPufIt0
>>27
そりゃないわ
表設計について何も分かってない

35: 2019/06/27(木) 20:47:04.677 ID:DoJsgMIXd
別にORマッパー使ってても生のクエリも書けるからケースバイケース

39: 2019/06/27(木) 20:51:41.095 ID:rV2Mm5X+d
最近はLINQ to SQL使っちゃうわ

40: 2019/06/27(木) 20:51:44.783 ID:DAYb9MKyM
正直ORMは重いし扱い難しいしMybatisとかでやりますみたいなのが多い気がする
pythonみたいな言語かRESTとかやる場合はORM使うかも

43: 2019/06/27(木) 20:56:36.411 ID:Stc8dUvY0
>>40
扱い難しいはともかく重いは使いこなせてないだけでしょ
MyBatisだろうがHibernateだろうが

41: 2019/06/27(木) 20:53:19.749 ID:ZSZD90b7d
別にどのフレームワークもORMではないけどなあ

46: 2019/06/27(木) 20:59:22.950 ID:Gx/C+win0
非同期でワークフローってパワーワードには自分で読み直して笑いましたすんません

48: 2019/06/27(木) 21:26:01.912 ID:Gx/C+win0
マジでプロのプログラマの仙人はどんな方法でデータベース扱ってんのさ
バックエンドで複雑に計算してフロントエンドを簡潔にするには生SQLでいいんだよね?

49: 2019/06/27(木) 21:27:08.644 ID:Gx/C+win0
理想はGoogleみたいに表層的には簡単な作り

50: 2019/06/27(木) 21:34:16.770 ID:vrEhyNPC0
どれほど優秀なORMを備えたフレームワークにも、生SQLを書くための特別な関数がある
つまりはそういうことだ

51: 2019/06/27(木) 21:36:38.159 ID:Gx/C+win0
>>50
ありがどうお前の言葉に救われた
俺はもうORMなんて学ばない

52: 2019/06/27(木) 21:43:27.992 ID:vrEhyNPC0
>>51
学んだ上で、やっぱりダメだな、ってとこだけ生SQLにしろよw

55: 2019/06/27(木) 22:02:28.467 ID:Gx/C+win0
>>52
まあ一応便利な機能だなー程度には学ぶつもりだけど実装しろと言われたら泣いて土下座して殺してくれと叫びながら勉強するつもり

53: 2019/06/27(木) 21:44:34.295 ID:6UC4XJpN0
割と複雑なsqlを書こうとするとホントきついわ
ちな最近はrails

54: 2019/06/27(木) 22:01:02.056 ID:Gx/C+win0
>>53
やっぱセキュリティの問題でとかでなるべくORM使うの?

56: 2019/06/27(木) 22:05:43.938 ID:6UC4XJpN0
>>54
セキュリティってよりはオブジェクト指向との親和性だな

58: 2019/06/27(木) 22:24:45.057 ID:Gx/C+win0
>>56
あーなるほどねー

57: 2019/06/27(木) 22:18:39.079 ID:Y4+dA0G+0
俺の中ではorm使ってたけど生sqlでいいって結論になった

59: 2019/06/27(木) 22:34:31.096 ID:Gx/C+win0
>>57
結局の所ORMはSQLの勉強しなくてもデータベース扱えるよって機能だと思ってます。セキュリティに関してはエスケープとプレースホルダ使っときゃ大抵ね
ログインは流石に気を使うけど

61: 2019/06/27(木) 22:36:46.122 ID:daT+n3Qk0
>>59
実際にはSQL理解してないで使うととんでもなく遅くなるから
そういうものではないんだがね

60: 2019/06/27(木) 22:35:49.783 ID:daT+n3Qk0
いつの時代も
必要に応じてどこまでチューニングするかの話でしかない

62: 2019/06/27(木) 22:42:26.213 ID:6UC4XJpN0
実際SQLかけずにORM書いてる奴は観た事ないわ

63: 2019/06/27(木) 22:43:56.922 ID:daT+n3Qk0
SQLのチューニングできないレベルでORM使ってるやつは結構見かける
やりたいことはできてるが、裏で何が起きてるかさっぱり理解してない

64: 2019/06/27(木) 22:48:14.151 ID:Gx/C+win0
ORM使うメリットがわからねえ
フレームワークにもよるんだろうけどさ

65: 2019/06/27(木) 22:59:17.540 ID:daT+n3Qk0
>>64
簡単なことが簡単にできる
複雑なことをやろうとすると効率が逆転する
要は単なる道具です

66: 2019/06/27(木) 23:00:41.023 ID:6UC4XJpN0
>>64
model使うと分かる

67: 2019/06/27(木) 23:59:14.011
生SQL使い続けろよ

68: 2019/06/28(金) 00:10:05.986 ID:2ABVfP8/0
RDBMSだと結局最後は実行計画とかレポートとか見て細かいチューニングするからね

69: 2019/06/28(金) 00:11:08.841 ID:6bjD3BBPM
簡単なSQLなら生SQLでも簡単だけどな