[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/16 17:55 / Filesize : 176 KB / Number-of Response : 928
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

SQL文をハードコーディングするやつはとっとと氏ね



1 名前:仕様書無しさん [2007/02/07(水) 01:32:56 ]
って思う

493 名前:仕様書無しさん [2007/03/05(月) 13:21:18 ]
ビューの元になるテーブルに適切なインデックスが張られていれば
ビューもそんなに問題にならないと思うけど

もしかしてjoinの代わりにビュー使ってるの?

494 名前:仕様書無しさん mailto:sage [2007/03/05(月) 13:33:06 ]
ビューにインデックス貼るって、用途無視してビュー作ってるだけじゃんw
ビューって言いたいだけだろ

495 名前:仕様書無しさん mailto:sage [2007/03/05(月) 13:54:05 ]
早い遅いはDB板で。

O/Rマッパーマンセーとかそういうレス希望

496 名前:仕様書無しさん mailto:sage [2007/03/05(月) 15:17:42 ]
>>488
実行計画とって、きちんとINDEXが使われるようなVIEWにしろwww
つか、元表にちゃんとINDEX作れwww


>>492
Oracleなんかじゃマテリアライズドビューなんていう
実データを持つVIEWのようなものは存在する。


>>493
正解。


497 名前:仕様書無しさん mailto:sage [2007/03/05(月) 19:41:07 ]
>>478
>極端な話、マスタ登録はストアド側でマスタ更新はプログラム側ってこともありうるのよ。
>同じレイヤーのロジックをストアドで組んだりプログラムで組んだりっていうのは
>アーキテクチャとして正しい姿なのか?っていうのは疑問。

そういう美しさを追求したいのなら、システムを設計する際に
アクセス権を含めてかなりカッキリと設計しておけ、って気がするが。

マスタ更新系に関してはストアドを作成し、そのオブジェクトに管理者のOWNER
権限がないとINSERTできない。とかな。

逆に参照はすべてDBAが用意したビューのみしか利用できないとかか。
素人プログラマにビュー作られてパフォーマンスが出ないとか言うなら
餅は餅屋な感じでプロのDBAのテーブル設計してもらって最適な
KEY,INDEX,VIEW,制約をやってもらう。

498 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:28:16 ]
>>496

当然元表のINDEXは、使われているが
話にならんぐらい遅いよ。


499 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:31:19 ]
こういう
ttp://www.geocities.jp/mickindex/database/db_view.html
ページもあるから、Viewは、遅いって言うのも一般的な話だと思う。

500 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:48:46 ]
>>498
VIEWでなく、普通にSELECTした方が速いのかい?

501 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:52:21 ]
>>500
絞込み順番で速度が変わるのでViewだと遅くなることが多い。



502 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:07:54 ]
DB2でJDBC経由で使う分にはVIEWとSELECTとの違いは体感しないけどなー。

マイクロソフトのOSからODBC経由でSQL投げると不思議と遅くなる事が
あるけど、なんなんだろうな。
SQLServer買えtって嫌がらせなんだろうか?って思う事がある。

まあ漏れはSELECTかMQTのどっちかの人だけど。

503 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:08:52 ]
>>500

インデックスが張ってあるカラムで検索するなら、
圧倒的に実表を使ったほうが早い。

504 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:12:28 ]
ところで具体的にVIEW使うと遅くなるRDBってナニ?
>>502と同様にDB2だと、テーブルでも、ビューでもマテリアライズでも
どれも同じ速度で結果が返ってくるけど。

505 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:15:44 ]
>>504

Oracleだよ。

>DB2だと、テーブルでも、ビューでもマテリアライズでも
>どれも同じ速度で結果が返ってくるけど。

ソース希望。


506 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:22:20 ]
>>505
ソースもなにもやって見れば解る。

適当なテーブルにビューを作成して、ついでにマテリアライズしておくと、
実テーブルとビューでマテリアライズな結果を帰ってくるような設定にしていおけば、
DB2のオプティマイザがマテリアライズの結果を返すので、
どのオブジェクトを参照しても9msくらいの早さで結果が返ってくる。

さすがは商用DBといったトコか。

Oracleに向かってこういう事いうと反論が山ほど返ってくるだろうけど、
Oracleは使う側がOracleを熟知していないとパフォーマンスでないよな。

507 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:24:27 ]
ハードコードしてそうな人が多そうだから、そっちに話を戻そうか

508 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:49:33 ]
ま、ストアド作ってもそいつを呼び出すもんはどうするのかってこともあるしね。

509 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:55:53 ]
Oracleのせいにしたいやつがいるな。


510 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:03:33 ]
別にハードコートが悪とも思えんけどなぁ。

たとえば以下みたいなSQLを直書きする方が
select DATE(a.yyyy || '-' || a.mm || '-' || a.dd ) from hoge as a, piyo as b
where ここらが動的生成
group by .....
having 動的生成

だとロジックを集中して短く作りこめるし。

そりゃ、select * from hogeみたいなハードコートは市ねとか思うけど。

511 名前:仕様書無しさん [2007/03/05(月) 23:05:39 ]
ビューで集約操作をすれば遅くなる、って言ってるだけじゃん
ビューは遅い、なんて言い切るなよボケ



512 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:08:04 ]
>>510
動的生成するにはハードコードだわな。

513 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:08:22 ]
|| '-' ||

新しい顔文字かと思った

514 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:19:02 ]
|| '-' ||
(。Y。)

515 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:20:58 ]
>>514
女神様じゃ〜

516 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:34:48 ]
|| '-' ||
(。Y。)ノ
  肉

517 名前:仕様書無しさん mailto:sage [2007/03/06(火) 07:57:35 ]
>>506
それ偶然だから。

518 名前:仕様書無しさん [2007/03/06(火) 09:05:33 ]
ハードコーディングの定義って何?

where句の条件が動的に変化して
それ以外のselect句が固定であったとき、
where句以外をソースに書いておくのがハードコーディング?

519 名前:仕様書無しさん mailto:sage [2007/03/06(火) 09:53:21 ]
>>518
ソースコードの中にSQLを直書きすること。


520 名前:仕様書無しさん [2007/03/06(火) 12:31:53 ]
それの何が問題なの?

521 名前:仕様書無しさん mailto:sage [2007/03/06(火) 12:58:47 ]
常に同一のSQLなら生SQLでいいけど、そうでもないのに
プレースホルダも使わずに
"select * from hoge where " + condition + ";"
なんて書いてるこわーいコードが世の中には溢れかえっている。





522 名前:仕様書無しさん mailto:sage [2007/03/06(火) 12:59:04 ]
変更の度にコンパイル

523 名前:仕様書無しさん mailto:sage [2007/03/06(火) 13:42:09 ]
>>521

ハードコーディング以前の問題。

>>522

今時、コンパイルに何時間もかかるわけじゃなし。
問題無いと思うが。

524 名前:仕様書無しさん mailto:sage [2007/03/06(火) 17:39:02 ]
数値のリテラルよりマシ。

525 名前:仕様書無しさん mailto:sage [2007/03/06(火) 21:31:10 ]
>>521見て思ったんだが、上の方で出てるHibernateとかはこの問題は発生しないの?
使ったことないんでよくわからん

526 名前:仕様書無しさん mailto:sage [2007/03/06(火) 21:35:37 ]
>>525
Hibernate関係ねー。よっぽど使い方まちがえたらSQLインジェクション発生する。

527 名前:仕様書無しさん mailto:sage [2007/03/06(火) 22:39:42 ]
>>526
やっぱりそうだよね。ありがとう。

528 名前:仕様書無しさん mailto:sage [2007/03/22(木) 21:09:04 ]
保守


529 名前:仕様書無しさん [2007/03/30(金) 21:52:17 ]
保守

530 名前:仕様書無しさん mailto:sage [2007/03/31(土) 00:10:44 ]
>>524
同じ意味のconstが複数あった時にゃ、リテラルの方がマシと思った

531 名前:仕様書無しさん [2007/04/02(月) 22:12:30 ]
プリペアドステートメントってどうよ



532 名前:仕様書無しさん mailto:age [2007/04/03(火) 12:45:58 ]
O/Rマッパーでも使えというのか?
SQLを書いた方が早い場合もあるんじゃないか?

533 名前:仕様書無しさん mailto:sage [2007/04/03(火) 13:07:08 ]
オラクルはわからんけどSAP R/3は内部でSQLをハードコーディング
してるのをよく見かけるぞ。

534 名前:仕様書無しさん [2007/04/03(火) 16:07:16 ]
SAPだったら別に良いんじゃないかという希ガス

535 名前:仕様書無しさん mailto:sage [2007/06/11(月) 20:42:07 ]
>>1
SQLインジェクションとかそういうことを危惧しての発言なのか、それとも単にリテラル文字列が気に入らないだけ?
後者ならお前はただのアホとしか言いようが無いぞ。

536 名前:仕様書無しさん [2007/06/11(月) 20:43:22 ]
あーハードコーディングとか言ってるから後者だな。
1は馬鹿丸出し。

537 名前:69式フリーPG ◆hND3Lufios mailto:sage [2007/06/11(月) 20:50:53 ]
プレースホルダを埋めた形でハードコーディングしてますが。

設定ファイルとかに外出ししてもさ、コンパイルせずに済むのってORDER BYとか
だけじゃん?

538 名前:仕様書無しさん mailto:sage [2007/06/11(月) 21:01:46 ]
Java界では保守性があがると言うもっぱらの噂ですよ。馬鹿っぽい気もするけどさ。

539 名前:仕様書無しさん mailto:sage [2007/06/11(月) 21:07:25 ]
コードとSQL文の距離が離れることで、可読性が落ち保守性が落ちる。

540 名前:仕様書無しさん mailto:sage [2007/06/11(月) 22:19:02 ]
S2Dao最強でOK

541 名前:仕様書無しさん mailto:sage [2007/06/17(日) 16:09:59 ]
ハードコーディングしたほうがSQLインジェクションには強い



542 名前:仕様書無しさん mailto:sage [2007/06/17(日) 17:38:27 ]
じゃあS2Dao Tigerでいいや

543 名前:仕様書無しさん mailto:sage [2007/06/20(水) 22:09:17 ]
>>541
検索条件を変えられないなら、ハードコーディングしようがしまいが
SQLインジェクションには無敵

544 名前:仕様書無しさん mailto:sage [2007/06/20(水) 23:43:29 ]
それは、ともかくSQLExceptionの変数をsexにしてるソースがあってさ
なんか、楽しいから、やめてほしいなぁと思うわけよ。

545 名前:仕様書無しさん mailto:sage [2007/06/20(水) 23:49:22 ]
ワラタ

546 名前:仕様書無しさん [2007/06/22(金) 22:57:10 ]
SQLインジェクション云々いってるやつって何なの?
それに対策立てた上での議論だろ?

547 名前:仕様書無しさん mailto:sage [2007/06/22(金) 23:09:47 ]
VBのソースって半分以上がSQLだよね

548 名前:仕様書無しさん mailto:sage [2007/06/22(金) 23:23:11 ]
XP的にはハードコーディングだな
困ってから作り直せばいいだろ。どうせ困る前に納期だ。

549 名前:仕様書無しさん mailto:sage [2007/06/22(金) 23:25:11 ]
ハードコーディングじゃない方法ってどんなの?

550 名前:仕様書無しさん mailto:sage [2007/06/23(土) 00:03:22 ]
XPなら重複コード禁止だろ
重複コード無しでSQLハードコーディングは無理だな。不可能。

551 名前:仕様書無しさん mailto:sage [2007/06/23(土) 00:07:08 ]
"SELECT *" を使いまくればSQLなんて楽勝!



552 名前:仕様書無しさん mailto:sage [2007/06/23(土) 00:14:16 ]
コボラ乙

553 名前:仕様書無しさん mailto:sage [2007/06/23(土) 00:17:48 ]
>>550

何処が重複になるのか詳しく説明プリーズ

554 名前:仕様書無しさん mailto:sage [2007/06/23(土) 00:41:05 ]
柔軟性がどうこう言うヤツに限って再利用可能なものをつくらないよなw


555 名前:仕様書無しさん [2007/06/24(日) 12:54:09 ]
SQLはハードコーディングでいい。
外出しにしても再利用などできない。

いやならO/Rマッピング使う。

556 名前:仕様書無しさん mailto:sage [2007/06/24(日) 13:29:24 ]
O/Rマッピングで美しく解決できるのなんて
チューニングの不要なやり逃げ案件だけ

557 名前:仕様書無しさん mailto:sage [2007/06/24(日) 14:36:13 ]
Webアプリの糞つまんねーCRUD部分にだけ適用するのが正解。

558 名前:仕様書無しさん mailto:sage [2007/10/04(木) 20:25:35 ]
hhddf






jfghhgh






tyyrtr






werwerwer





utuytu




559 名前:仕様書無しさん mailto:sage [2007/11/15(木) 01:49:11 ]
SQL が変わる時ってロジックも変わってることが多いんで、
SQL だけ外に出しても意味なくない?
SQL を自動生成してるんなら別だけど。


560 名前:仕様書無しさん mailto:sage [2007/11/16(金) 00:49:22 ]
>>559
それどころか予期せぬ障害を引き起こしたりもする.
ウチのアホSEがSQLを変更するのは設定ファイル変更で,
プログラムの変更は入りませんから,再テストの必要は無いですね,
って言って見事にバグらせたことがある.
っつーか事前検証くらいしろよっていう話なんだけどさ.

561 名前:仕様書無しさん mailto:sage [2007/11/16(金) 23:19:41 ]
htmlをロジックと分離するのは、それがデザインであるという以外に
定数として埋め込む手間とかいろいろあるんだよな。
SQLだと後者のメリットしかないんだけど、俺は外出しがいい。

>>559
Where句だけ変わる事って結構あると思うけど。
特に集計するときとか。

自動生成はまた別の問題を抱えていて、条件によって構文すら異なる。
レアケースでだけ構文エラーを起こしたり、解釈が変わってしまうのがいやになったよ。
まるで、Cのマクロで意図しない式に展開されてるときと同じ感覚。

>>560
それはリファクタリングがなってないだけだよな。
変更前後のSQLを差し引きしたら、どこが違うかなんて一発でわかるのに。




562 名前:仕様書無しさん mailto:sage [2007/12/07(金) 22:17:12 ]
>>561
何が言いたいのか全くわからん

563 名前:仕様書無しさん mailto:sage [2007/12/18(火) 22:31:47 ]
半端な気持ちで外出しするとメンテではまる。
どのプログラムから
どのタイミングでどのテーブルのどのフィールドを
どのSQLを使って参照・更新するのかが、チームで共有されていて
ちゃんと管理されていて、調べやすければメリットがあるけど、
ずさんな場合は依存関係を調べるのに結局ソースにあたるハメに陥り
その上、間接的に読まれるせいでソースをGREPしづらいし、数倍面倒になる。

564 名前:仕様書無しさん mailto:sage [2007/12/19(水) 01:49:10 ]
せっかく分けたのにちょっとした修正時に結局両方直さなければならないのは悲しい事だ

565 名前:仕様書無しさん [2007/12/19(水) 06:52:44 ]
563とか564のスレを読む限り、外出しの推進派と反対派では外出しの方法が違うのでは?と勘ぐってしまう。
564の意見とか的外れもいいとこ。

566 名前:仕様書無しさん [2007/12/19(水) 07:11:14 ]
重複、ここでやれ。
pc11.2ch.net/test/read.cgi/prog/1180118552/l50

567 名前:仕様書無しさん [2007/12/19(水) 09:46:47 ]
>>565
そう勘ぐったのなら、具体的にどう違うと思ったのか指摘すればいいのに。

568 名前:仕様書無しさん mailto:sage [2007/12/19(水) 19:46:57 ]
スレとレスも間違えてるしな

569 名前:葉猫 ◆Jz.SaKuRaM mailto:sage [2007/12/20(木) 21:54:00 ]
1000行レベルのストアドをソースに埋め込む気にはならんな ('A`)マンドクセー

570 名前:仕様書無しさん mailto:sage [2007/12/20(木) 22:31:40 ]
何言ってんだオメー
さっさと氏ねよ

571 名前:仕様書無しさん [2007/12/22(土) 03:15:40 ]
結局、ソースファイルと外出しsqlの両方とも修正しなくといけなくなるだけ。



572 名前:仕様書無しさん [2007/12/22(土) 03:17:33 ]
マ板のスキル低下は著しいなwwwwwww

573 名前:仕様書無しさん [2007/12/22(土) 13:17:03 ]
java向けのスレなのにC++とかのプログラマが来て些細なテクニック論に
なってるなこのスレ

574 名前:仕様書無しさん mailto:sage [2007/12/22(土) 13:43:16 ]
そんな前提>1に書いてないので認めないクマー

575 名前:仕様書無しさん mailto:sage [2007/12/22(土) 16:00:08 ]
>>283
ちょwwそれうちの病院www
クエリはないけど、リンクテーブルだらけのmdbファイルあったわ。
でも処理はVBじゃないっぽい。

独自にデータ集計したりするときに俺もそこからインポートしてるけど。

576 名前:仕様書無しさん [2007/12/22(土) 19:05:06 ]
>>573
++マが全部こんなのだって訳じゃないんだぞといっておく

577 名前:仕様書無しさん mailto:sage [2007/12/22(土) 19:49:43 ]
スレの最初のほうを読んで、それ以降はチラ見してただけだから、Javaスレになってたなんて気ずかなかったよ。

578 名前:仕様書無しさん mailto:sage [2007/12/22(土) 20:07:09 ]


579 名前:仕様書無しさん [2007/12/22(土) 22:09:20 ]
SELECT文とかを変数につっこんでExecuteとかマジやめて欲しいんだけど。
特にWebアプリの場合ね。
ストアドを作ってそれを呼ぶだけにするのば一般的だと思ってたんだけど
そうでもないの?
そういえばカカクコムとか昔攻撃されてたね。

580 名前:仕様書無しさん mailto:sage [2007/12/22(土) 22:15:40 ]
>>579
DB側に処理をおくのは・・・って考え方もあるよ
インジェクション対応して無いなんてのはどうやっても問題外

581 名前:仕様書無しさん mailto:sage [2007/12/22(土) 23:07:37 ]
hibernateってヒントつけられないから馬鹿だよね。
使い物にならん。



582 名前:仕様書無しさん mailto:sage [2007/12/22(土) 23:11:39 ]
> するのば
     ↑
あまり一般的じゃないと思う

583 名前:仕様書無しさん mailto:sage [2007/12/23(日) 00:21:49 ]
Webの開発だったら普通はストアドプロシージャを実行するよ。
LINQなんて論外。

584 名前:仕様書無しさん mailto:sage [2007/12/23(日) 00:26:17 ]
>>583
ストアドはないだろ・・・

585 名前:仕様書無しさん mailto:sage [2007/12/23(日) 00:35:25 ]
>>584
PROCEDUREというやつの事です。
Accessだとクエリだっけ?

586 名前:仕様書無しさん mailto:sage [2007/12/23(日) 00:37:30 ]
SQLをハードコーディングする人って多いのね。

587 名前:仕様書無しさん mailto:sage [2007/12/23(日) 00:49:31 ]
インジェクション対策ならプリペアードクエリでいいだろ

588 名前:仕様書無しさん [2007/12/23(日) 00:55:00 ]
DBへの処理はDB側で行うのかプログラムに書いちゃうかはプロジェクトによって分かれるね。
今のプロジェクトはDBへの処理は必ずストアドを使うように言われてる。
そもそもプログラムを実行するユーザーにはストアドのGRANT権限しか付与してくんない。
まあどっちでも良いや。

589 名前:仕様書無しさん mailto:sage [2007/12/23(日) 00:58:24 ]
DB側に処理もって行ったら不可分散しにくいじゃん

590 名前:葉猫 ◆Jz.SaKuRaM mailto:sage [2007/12/23(日) 09:48:57 ]
一時テーブルを使えないとスピードが遅くなるからDB側でちょ (`・ω・´) シャキーン

591 名前:仕様書無しさん mailto:sage [2007/12/23(日) 11:10:09 ]
お前マジキメェ
さっさと失せろ



592 名前:仕様書無しさん mailto:sage [2007/12/23(日) 17:58:23 ]
どう書くのが推奨なの?
SQL生成用の関数作ってパラメータ放り込むぐらいしか考えつかん


593 名前:仕様書無しさん mailto:sage [2007/12/23(日) 18:07:02 ]
ORマッパ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef