X



トップページDB@2ch掲示板
1002コメント327KB
Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2016/05/29(日) 16:50:08.13ID:dqKJQypQ
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/

過去スレとかめんどいから誰か適当に貼って
0235NAME IS NULL
垢版 |
2017/02/07(火) 12:57:17.68ID:???
>>231
条件による
使えるメモリーとかコア数違うから
0237NAME IS NULL
垢版 |
2017/02/07(火) 18:00:30.07ID:???
なんだこのアホなやりとりは
0238NAME IS NULL
垢版 |
2017/02/07(火) 19:31:44.18ID:???
レス古事記だろ
スルーでいいよ
0239NAME IS NULL
垢版 |
2017/02/21(火) 14:26:23.03ID:???
updateするときに、違いがなかったらupdateされないようにしたいです。
(トリガーで履歴を取っているのと、timestamp列が無駄に変わるのを防ぎたいため)

そこで、updateのwhereに
binary_checksum(項目1,項目2,項目3,・・・)<>binary_checksum(@項目1,@項目2,@項目3,・・・)
ってのを追加してます。

概ねいいんですが、かなり単純な条件でコンフリクトが発生しました。
bit型の項目1と項目9があって、項目1:1→0,項目9:0→1 のとき、binary_checksumが一緒になるという・・・

HashBytes だと () の中に複数の項目が書けません。
binary_checksumみたいな () に複数項目が書けるもので、もうちょっとコンフリクト起きにくいなにかないですか。
0240NAME IS NULL
垢版 |
2017/02/21(火) 14:48:31.75ID:???
>>239
コンフリクトの使い方間違ってるんじゃないか?

それはともかく、単純にwhere old_item1 <> new_item1 or old_item2 <> new_item2 or ...
ってやるのは駄目なのか?
0241NAME IS NULL
垢版 |
2017/02/22(水) 08:27:45.48ID:???
binary_checksumがどうやって計算してるかしらんが、たとえば単純なsumだったら
(1,0)と(0,1)が同じ値になるのは当然だわな
素直に全項目比較する方がいいんじゃね

どういう状況かわからんが、本来はホストアプリ側で更新する(UPDATE発行する)かどうか判断するべきだと思うけどな
0242239
垢版 |
2017/02/22(水) 10:07:47.80ID:???
ありがとうございます。
仕方ないので
where ・・・ and (binary_checksum(項目1)<>binary_checksum(@項目1) or binary_checksum(項目2)<>binary_checksum(@項目2) ・・・)
という風にやりました。
HashBytesにしなかった理由は、項目1つならコンフリクトの可能性が低いと判断したためです。
(演算の軽いほうで)
0243NAME IS NULL
垢版 |
2017/02/22(水) 21:31:00.62ID:???
SQLServerを使用したいと思っているのですが、全くの無知なので教えて頂きたいです。

現在、accessを使用しています。
接続人数は3人(3台)で、バックエンドデータを1つ作成しフロントエンドを3台に配布してリンクテーブルを使って使用しています。
最近、同時接続時にクエリ実行が遅くなってきて困っています。

このバックエンドデータをSQLServerに移し、ODBC接続でリンクすればクエリ速度等は解決するのでしょうか?
また、SQLServerに移行したとしてもフロントエンドのacceesでは同じようにクエリやVBAでテーブルの印刷処理やクエリでの更新等も特に設定などを変えずにそのまま使用出来るのでしょうか?

初歩的なことだと思うのですがよろしくお願いします。
0244NAME IS NULL
垢版 |
2017/02/22(水) 21:55:11.78ID:???
>>243
とりあえずやってみると良いよ
費用かからないし
しかし今時こんなが環境あるんかな
20年くらい昔によくあったやつ
0245NAME IS NULL
垢版 |
2017/02/22(水) 23:17:15.03ID:???
>>243
アップサイズは全部が全部改善するとは限りませんが基本的には改善します
下の方が書かれている様に、まずやってみると良いですよ
これくらいか〜と体感できますので

ODBCリンクであれば基本的にフロントのAccessはそのまま使用できます
SQL Serverは文字コード、ソート順、キー、インデックス
くらいは確認しておいた方が良いですよ
0246NAME IS NULL
垢版 |
2017/02/23(木) 12:33:19.21ID:???
>>244
>>245
有り難うございます。
バックエンドをSQLServerに移行すると、フロントエンドでのVBAやクエリでの処理が今まで通り使えるのかが分からずに悩んでいました。

基本的には、バックエンドがacceesファイルからSQLServerに替わっても、特に編集し直すこともなくフロントエンドを使用することが出来るで大丈夫ですか?
0247NAME IS NULL
垢版 |
2017/02/23(木) 14:40:40.20ID:???
>>246
.mdb or .accdbでODBC接続なら編集不要だと思うけど
SQL SERVERの照合順序は気を付けて
照合順序はアプリ側の実装に依存するから自力で調べて
0248NAME IS NULL
垢版 |
2017/02/23(木) 18:48:24.75ID:???
>>247
助言有り難うございます。
accdbなのでそのまま使えそうです。

とりあえず、SQLServerをインストール、accessデータをインポートしODBC接続までしました。
何故かテーブルデータをフロントエンドのaccessで編集出来なかったのですが、主キーが設定されてないのか、ファイアーウォールがまだ未設定だからなのか調べ中です。

疑問なのですが、
10万件のデータがあり、1件のデータを更新したい為に、単純な更新クエリを作成したとします。
単純な更新クエリなので抽出や選択もなく、10万件の全てのデータが更新されます。つまり9万9999件は無駄な更新です。
これをaccessデータのリンクテーブルではかなり時間がかかりますが、SQLServerでのリンクテーブルでは数秒で処理が終わるほど変化があるのでしょうか?
それとも、このような無駄なクエリではあまり速度は変わらず、クエリ自体を考え直すべきなのでしょうか?
0249NAME IS NULL
垢版 |
2017/02/23(木) 20:18:10.72ID:???
>>248
テーブル編集はSQL Server Management Studioを使うか、DDL直接投げるか
単純なUPDATEなら10万レコードだろうが一瞬で終わるよ(※データ量次第)
0250NAME IS NULL
垢版 |
2017/02/23(木) 20:51:17.86ID:/7OWtulZ
思わせぶりな※
0251NAME IS NULL
垢版 |
2017/02/23(木) 21:19:27.58ID:???
>>248
昔のAccessしか知らないけど
主キー無い場合はテーブルリンク作成時にキー項目選択するとかだったはず
当然可能なら主キーは設定すべきだけど

「9万9999件は無駄な更新」ってのが意味不明
何万件あろうが更新対象が1件の場合は1件しか更新しないよ
その場合の更新は文字通り一瞬で終わる
0252NAME IS NULL
垢版 |
2017/02/23(木) 22:30:45.12ID:???
>>249
フロントエンドのフォームでテーブルのデータは編集出来ないのでしょうか?
>>251
私の勘違いでしょうか。
いつも日報等で更新したいデータはカレントレコードの1件なのですが、更新クエリを使うと〜万件(全件)のデータを更新します、と表示されて、数分かかります。
クエリはフィールドAが空白ならフィールドBに"合格"の文字、フィールドAが空白以外なら"不合格"の文字を入れる、というクエリです。
これでは全レコードがクエリの対象になっていると解釈すべきですか。
0253NAME IS NULL
垢版 |
2017/02/24(金) 02:51:11.36ID:???
>>252
テーブル開いてデータ変更できるよ
更新権限のないユーザーで接続してると思う
0254NAME IS NULL
垢版 |
2017/02/24(金) 06:17:19.75ID:???
>>252
このロジックだったら全件更新だよ

以下なら2件の更新になるよ
それでも時間かかる場合はAとBのインデックスを作成すれば一瞬で終わる
Aが空白でBが合格以外の場合は、Bに合格を入れる
Aが空白以外でBが合格の場合は、Bに不合格を入れる
0255NAME IS NULL
垢版 |
2017/02/24(金) 07:23:35.87ID:???
>>252
> いつも日報等で更新したいデータはカレントレコードの1件
そのレコードを抽出する選択クエリを作成すればいいだけじゃね?
0256NAME IS NULL
垢版 |
2017/02/24(金) 11:13:40.64ID:???
>>252
>全レコードがクエリの対象になっていると解釈すべきですか
どんなクエリ(SQL)流したかとどんなテーブル(インデックス)だったか分からんと分からん
が、全件読み込んでる可能性が高いなぁ

>>254
クエリの検索条件にACCESSの関数入れたりしたら全件取得するかもしれんぞ

メインはサーバ側の話じゃなくてACCESSの動作の話だし
ACCESSのスレ探すが作るかして移動したほうが良いんじゃね
0257NAME IS NULL
垢版 |
2017/02/24(金) 12:27:49.62ID:???
皆様有り難うございます。一度クエリを見直してみます。

色々と調べたのですが、単純なフロントエンドをaccess、バックエンドをSQL ServerでODBC接続では、
クエリ等の処理はサーバー側でななくクライアント側で処理されるのであまり速度の恩恵はないと見たのですが、やはりそうなのでしょうか?
これをサーバー側で処理する場合、かなりVBA等の手直しが必要なそうですが、そこまでいくと素人レベルでは難しそうです。
0258NAME IS NULL
垢版 |
2017/02/25(土) 03:47:54.77ID:???
やってみてそう感じたなら恩恵はないんだろうね
0259NAME IS NULL
垢版 |
2017/02/25(土) 11:50:18.21ID:???
>>257
SQL文の実行はAccessではなくSQL Serverだよ

>>254で改善できると思われ
0260NAME IS NULL
垢版 |
2017/02/25(土) 17:40:28.48ID:???
>>259
有り難うございます。
SQL文はSQL Serverで処理されるのですね。

今の解釈としては
accessのみのリンクされたデータベースでは、処理は全てクライアント側の仕事になりネットワークトラフィックが膨大になる。
SQL ServerとのODBCのリンクテーブルでは、SQL文をSQL Serverに渡し、SQL Serverが処理を行い、その解をクライアントに渡すのでネットワークトラフィックが少なくてすむ。
という理解で大丈夫でしょうか?

今までクエリ処理が重かったので、VBAを使ってきたのですが、出来るものはクエリに変えた方がいいのでしょうか?
0261NAME IS NULL
垢版 |
2017/02/25(土) 19:54:24.52ID:???
アクセスでodbcリンクテーブルを使うとデータが多いと遅いから
更新ない一覧表示とかの時はパススルークエリ使ったほうがいいと思うわ
0262NAME IS NULL
垢版 |
2017/02/25(土) 23:10:34.44ID:???
>>260
>SQL文をSQL Serverに渡し、SQL Serverが処理を行い
は正しいんだが、実行する内容によって、まずACCESSがどんなSQLを発行するか
その結果を受け取った後にどんな処理をするかによるので
>ネットワークトラフィックが少なくてすむ
とは限らん
>>254で言ってるように、検索条件にACCESSの関数入るような処理だと結局ACCESS側で全件取得して検査するかもしれん
なんにしてもACCESSの話だからこれ以上はどっか移動しろ
0263NAME IS NULL
垢版 |
2017/02/26(日) 23:01:28.87ID:???
「上位200行を編集」で表示されたデータを全選択してコピーすると
選択したデータにはあった括弧などの文字が欠落してコピーされる」みたいになバグがSqlServerにあると聞いたのですが
本当なのでしょうか?(例えば"(ABC)"を選択してコピーし、メモ帳などに貼り付けると"(ABC"になってたなど)
0264NAME IS NULL
垢版 |
2017/02/26(日) 23:28:44.28ID:???
なんでどこで聞いたか言わないのかねえ
0265NAME IS NULL
垢版 |
2017/02/27(月) 08:15:54.58ID:???
自分で試せる環境はないのかね。
0266NAME IS NULL
垢版 |
2017/03/03(金) 00:00:11.98ID:???
VB6からSqlServerに接続する時はoo4oとかいうのを使うんだっけ?
0268266
垢版 |
2017/03/03(金) 06:07:27.23ID:???
>>267
そうだった、オラクルだったw

10年以上前(受託開発やってた会社の正社員時代)に使ってたからすごくなつい気分になったよ、ありがとう。
そんな俺も今じゃ客先常駐のしがない派遣社員・・・orz
0269NAME IS NULL
垢版 |
2017/03/04(土) 17:12:25.44ID:???
sql server使う人は言語はphp?
0271NAME IS NULL
垢版 |
2017/03/05(日) 06:30:37.18ID:???
sql server使う人は言語はC#?
0272NAME IS NULL
垢版 |
2017/03/05(日) 11:37:02.05ID:???
SQLServerはStandardとEnterpriseのEdition機能差が酷すぎるわ
碌に新機能使えないならStandardなんて名乗らずにLiteとかにしろよと
0273NAME IS NULL
垢版 |
2017/03/05(日) 11:41:36.54ID:???
おれは C#,C++, PowerShell 辺りが多い
0275NAME IS NULL
垢版 |
2017/03/05(日) 17:53:33.74ID:???
Javaと聞くといつも風呂釜洗浄剤を思い浮かべてしまう
0279NAME IS NULL
垢版 |
2017/03/05(日) 20:35:26.58ID:???
>>277
ado(activex data object)でやってる
マスターの更新とかデータのセットや取得はエクセルでやったほうが楽チン
0280NAME IS NULL
垢版 |
2017/03/06(月) 00:11:22.47ID:???
OLEDB廃止だったはずだけど、いまだにADOで接続できるドライバあるのか
まあ、OLEDB-ODBCで行けるっちゃいけるんだろうけど
0281NAME IS NULL
垢版 |
2017/03/08(水) 14:25:17.42ID:???
現在2012にて動いている環境を2014に移行させようと思っています。

データは毎夜間にbcpコマンドを使って取り入れており、そのコマンド・フォーマットファイル自体は既存のものを流用予定です。
で、実際に動かしてみると2014のみ

SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]キャストした文字コードが無効です。

が2レコード出ました。原因のレコードは突き止めたのですが、問題は分からず。
いろいろ試すと以下の事が分かりました。

・datetime2を使用しているカラムが怪しい?
・2レコードのうち片方のレコードを削除すると全レコード取り込みOK
・問題の1レコードの位置を最下部に移動して保存し直しすると全レコード取り込みOK
・問題の1レコードのdatetime2の最下部を1桁切ると全レコード取り込みOK

この件に関しては対応方法はあるのですが、そもそもの原因が分からないのは気持ち悪いです。
何か思いつく事はありますでしょうか?
0282resumi
垢版 |
2017/03/08(水) 17:40:19.11ID:hjh5f++s
https://goo.gl/l3fSYl
これ本当??
普通にショックだね。。
0283resumi
垢版 |
2017/03/08(水) 18:04:56.55ID:hjh5f++s
https://goo.gl/l3fSYl
これ本当??
普通にショックだね。。
0284NAME IS NULL
垢版 |
2017/03/08(水) 20:59:53.54ID:???
>>281
暗黙の型変換かなあ

bcpじゃないけどバッチ処理で値によって引っかかって
手前側でcastして明示的に型変換かけてから突っ込んだことがあるな

1レコード削除したら動くとか、ケツに持ってったら動く
とは整合性取れないけども
0285NAME IS NULL
垢版 |
2017/03/08(水) 22:54:59.32ID:???
問題のレコードの末尾にエスケープコードか何か入ってるんじゃないの?
0286NAME IS NULL
垢版 |
2017/03/09(木) 10:10:24.96ID:???
NVARCHAR内のNULL文字(NCHAR(0))を検索または置換する方法はありますか?
LIKE '%'+NCHAR(0)+'%'
REPLACE(name, NCHAR(0), '')
等を試してみましたが、だめでした。
0287NAME IS NULL
垢版 |
2017/03/09(木) 13:06:16.75ID:???
>>286
正しいやり方かどうかはわからんが
select * from table where name like N'%' + nchar(0) + N'%' collate JAPANESE_BIN
で検索できたよ
0288286
垢版 |
2017/03/09(木) 17:08:09.99ID:???
>>287
できました
ありがと
0289NAME IS NULL
垢版 |
2017/03/09(木) 17:13:43.94ID:???
SQLサーバっていまだにNとかncharとかcollateとかいるのか
0291NAME IS NULL
垢版 |
2017/03/10(金) 11:42:27.96ID:???
>>290
あ、そうなの?
最近PostgreSQLしかやってないから、他DBがどうなってるのか知らない
0292NAME IS NULL
垢版 |
2017/03/28(火) 10:32:41.51ID:???
1回目もクエリだけやたら時間がかかるっていう経験ないですか?
2回目は速い
改善する方法あったら教えてください
0293NAME IS NULL
垢版 |
2017/03/28(火) 13:20:36.85ID:???
>>292
まずは、やたら時間がかかる原因を調べる。実行計画を見るとか。

そういうクエリ自身の問題ではない場合で、以下にあてはまるのなら、0回目のクエリを発行してデータをキャッシュにのせればいい。
(0回目:データベース起動後に重いクエリを実行するとか、テーブル全体を読んでキャッシュにのせるとか)
・単に対象データを物理ディスクから大量に読む必要がある
・なおかつ何回も類似クエリを発行する必要がある
・1回目が遅いのも改善したい

キャッシュミス多発なら、キャッシュサイズを拡大する。
ハード性能的に無理なら、より性能の良いハードに乗り換える。
0294NAME IS NULL
垢版 |
2017/03/28(火) 14:33:14.80ID:???
DBサイズくらいのメモリ積め
0295NAME IS NULL
垢版 |
2017/03/28(火) 14:55:00.82ID:???
今調べたら、Windows Serverは余裕でTBの領域に入ってるな。2016でmax 24TB。
メモリは32GB*4の128GBで17万程度。
0296NAME IS NULL
垢版 |
2017/03/28(火) 16:34:29.46ID:???
ストアドにしてコンパイル済みにする手もあるが
0297NAME IS NULL
垢版 |
2017/03/30(木) 00:46:03.18ID:???
ストアドにしたって、データのキャッシュミスは減らんと思うが
コンパイル時間で1回目だけやたら時間がかかるとか、どんな複雑なクエリ書いたらそうなるってんだ
0298NAME IS NULL
垢版 |
2017/03/30(木) 15:01:26.21ID:???
>>297
単にディスクからの読み込み量が多いだけでしょ
場合によっては、その読み込みが不要な場合もあるから、1回目のクエリから高速化できかもしれん
0299NAME IS NULL
垢版 |
2017/04/02(日) 18:33:09.18ID:???
>>298
データがキャッシュにヒットする以外に
ディスクからの読み込みが不要で高速化できる場合の具体例をあげてくれ
0300NAME IS NULL
垢版 |
2017/04/03(月) 13:31:22.61ID:???
>>299
説明不足ですまん。
ディスクからの読み込みがゼロになるということじゃなくて、不要な読み込みがなくなるかもという話。
例えば、
・インデックスがなくseq scan発生
・インデックスはあるがクエリがまずくてインデックスが使われずseq scan発生
とか。
0301NAME IS NULL
垢版 |
2017/04/04(火) 08:11:48.03ID:???
>>300
それストアドにしたって解決されないわけだが
むしろ実行計画の生成タイミングで悪化する可能性もあるんじゃね
SQL Serverのストアドがいつ実行計画立てるかしらんけど
0302NAME IS NULL
垢版 |
2017/04/04(火) 10:59:56.61ID:???
>>301
ストアドは関係ないよ
クエリの内容そのものに問題があったり、indexを作ったりしたら読み込みページ数が減るかもねという話
なので、まずは実行計画を見るところから始めましょうということ
0303NAME IS NULL
垢版 |
2017/04/04(火) 11:06:24.35ID:???
舐めるデータが多くて、初回はハードディスクから、2回目以降はキャッシュされたメモリーから
だから速度が違う

ストアドにすることで、コンマ何秒かは改善するかもしれないが、その程度

あとインデックスを見直すか
0304NAME IS NULL
垢版 |
2017/04/04(火) 11:23:43.06ID:???
ストアドストアド言ってる人は、90年代に生きてるんですかね
0305NAME IS NULL
垢版 |
2017/04/04(火) 12:18:00.83ID:???
今どきはストアド使わんのがトレンディなんか?
0306NAME IS NULL
垢版 |
2017/04/04(火) 13:22:41.59ID:???
>>305
実行時間短縮が目的でストアドを使う奴はいないだろうね
0307NAME IS NULL
垢版 |
2017/04/04(火) 14:30:20.24ID:???
数百KBレベルのクエリなら、parse->palnningでコンマ何秒かかかるかもしれん
0308NAME IS NULL
垢版 |
2017/04/04(火) 19:25:55.84ID:???
>>306
関係ない事を言うのに俺にアンカつけんのやめてもらえんかな
俺までバカに見えるやろが
0310NAME IS NULL
垢版 |
2017/04/05(水) 12:26:42.39ID:???
>>309
だからなんだよ?
お前がそう思ってる事が今なんか関係あるのか?
バカしかいないのかここは
0311NAME IS NULL
垢版 |
2017/04/05(水) 13:18:00.59ID:???
>>310
> だからなんだよ?
>>305みたいなマヌケなレスするなってことだよ
そんなこともわからんバカなの?
0312NAME IS NULL
垢版 |
2017/04/05(水) 13:28:16.18ID:???
>>305
いつまでも暴れられると困るので。
> 今どきはストアド使わんのがトレンディなんか?
そういうトレンドはありません。
0313NAME IS NULL
垢版 |
2017/04/05(水) 20:27:50.95ID:???
まあしかし、ORMの普及や回線速度の向上とかでストアド不要論が優勢な流れはあるかと
昔はトラフィック減らして速度向上させるためにストアドって流れはある事はあったからな
0314NAME IS NULL
垢版 |
2017/04/05(水) 21:15:40.39ID:???
>>311
だから関係ないレスでアンカつけんのやめてもらえんかな
俺までバカに見えるやろが
0315NAME IS NULL
垢版 |
2017/04/05(水) 21:58:10.55ID:???
>>313
SQLSeverと親和性高いC#がEF推しているのを見ると不要論が優勢でも不思議じゃないな
0317NAME IS NULL
垢版 |
2017/04/06(木) 10:50:33.00ID:???
>>313,315
ORMやEFが広まれば、よりストアドプロシージャ・ファンクションの需要が高まる気がするが。
ドメインロジックはサーバ側で実装し、クライアントはそれを使用するだけというスタイル。
0318NAME IS NULL
垢版 |
2017/04/06(木) 13:19:00.97ID:???
そんな思想があったらRailsなんぞ流行らんわ
何処の時空の話だよ
0319NAME IS NULL
垢版 |
2017/04/06(木) 13:59:58.76ID:???
>>318
まぁ、RailsだろうがEFだろうが、データをどかっと取ってきて、クライアントコードで
ごりごりドメインロジックを実装するような層には関係ない話かな。
0320NAME IS NULL
垢版 |
2017/04/06(木) 14:11:49.32ID:???
そんな話じゃねえよ
EFが何しにPOCOなんての売りにしてたかって話だ
0321NAME IS NULL
垢版 |
2017/04/06(木) 15:42:00.99ID:???
>>320
つまりは、
> データをどかっと取ってきて、クライアントコードで
> ごりごりドメインロジックを実装する
ということだろ?
POCOメインのプログラマには関係ない話だよ。

そんな話じゃないなら、どんな話なんだ?
0322NAME IS NULL
垢版 |
2017/04/06(木) 15:53:14.04ID:???
DB側でスキーマ書いて処理も書いてってのが古い思想という話をしている
開発スピードが無闇に上がってスキーマ変更朝令暮改でって今時はな
0323NAME IS NULL
垢版 |
2017/04/06(木) 15:58:59.46ID:???
>>322
> DB側でスキーマ書いて処理も書いてってのが古い思想という話をしている
なるほどね。
でも、ドメインロジックをデータベース側に寄せるか、クライアント側に寄せるかという問題は、
今でも存在する。ふるいも新しいもないと思うが。

> 開発スピードが無闇に上がってスキーマ変更朝令暮改でって今時はな
それこそ、データベース側にドメインロジックの実装を寄せた方がいいのでは?
0324NAME IS NULL
垢版 |
2017/04/06(木) 16:05:36.81ID:???
例えば、2003年のMartin Fowlerのブログポスト:
『ドメインロジックとSQL』
http://bliki-ja.github.io/DomainLogicAndSQL/

ここに書かれていることは、全然古いとは思わない。
逆に、自動生成されるコードをメインに使うようになる場合は、ドメインロジックを
ストアドファンクションで実装してViewにした方がいい場合も結構あると思うんだが。
0325NAME IS NULL
垢版 |
2017/04/06(木) 16:19:28.98ID:???
昔々のウォーターフォールで上流で設計決まる時代ならそれもよかろうさ
だが今はデータ構造から卓袱台返される
その時アプリとDB両方に手ぇ入れるのと
アプリだけで済むのとどっちが早いか?
自明だろ
0326NAME IS NULL
垢版 |
2017/04/06(木) 18:53:09.88ID:???
DB側でごりごり書いたストアドって、InMemoryでUnitTestできるのかい?
0327NAME IS NULL
垢版 |
2017/04/06(木) 20:44:49.38ID:???
Web系とかで高速開発/デプロイな現場なら
コードファーストも面白いし効率あがりそうと思うけど
DevOpsの時代っても考えなしに書くでなし
結局はV字開発なんだからDB側でスキーマ決めるくらい
やれば?みたいな思いはあるな古い考えなんだろうけど

SIerソルジャーだから>>324もよくわかる
SQL一発取得+コーディングレスなアプローチが
楽/効率的な局面は現場じゃザラにあるよねえ

SSRS/PowerBIとかDataSpiderだの触るととくにそう
ストアド書いてぽちぽちするだけでけっこう
運用に耐えるもんできるし変更追従も保守も楽だしな
基幹から社内向けWebで集計帳票や明細表な要件なら
SQL以外のコーディング自体がそもそもバカバカしい
0328NAME IS NULL
垢版 |
2017/04/08(土) 22:23:48.60ID:???
>>327
純粋なコードファーストはある程度以上の規模だと使い物にならんと思ってた
スキーマはDB側でかっちり決めんと話にならんだろうと

これが古い考えだと言われればそうなんだろうかと思ってた
が、既存のデータベースからコードファーストなんて手法が出来た所を見ると
やはりスキーマをDB側で決めるのは今でも必要なんじゃないか

ストアドにいろんなものを閉じ込めるのは、手法の新旧で言えばそれこそ古い手法だと思う
ストアドの保守はアプリの保守よりコストが高いのが現状じゃないかと思う
ストアドの保守がアプリの保守より低コストだって言う所ならそれを採用するのもありなんだろうけど
0330NAME IS NULL
垢版 |
2017/04/09(日) 18:40:23.01ID:???
with(nolock)をselect文全てに付けるとヤヴァイ?
ググったらコミット前のデータが返ってくるとか
ページ分割が起こった場合行の重複や欠落が発生するとか書いてあるけど
今仕事で触ってる既存のselect文のコード全部そうなってる
0331NAME IS NULL
垢版 |
2017/04/09(日) 19:22:13.71ID:???
ヤバイかどうかは業務内容による
0332NAME IS NULL
垢版 |
2017/04/10(月) 14:48:01.02ID:???
>>329
質問の真意が図りかねるが
>ストアドにいろんなものを閉じ込める
の事であるなら、たとえば
ビジネスロジックをストアドとして実装することや
DBアクセスの結果をストアドの帰りとすることでスキーマ変更をアプリに意識させないこと
などの手法を指してる

純粋にストアドの意味が分からないなら
DBに格納できる一連の手続きかな
0333NAME IS NULL
垢版 |
2017/04/10(月) 15:17:23.17ID:???
>>330
常に1スレッドからしか触られない前提なら別にヤバくない
0334NAME IS NULL
垢版 |
2017/04/10(月) 22:02:15.03ID:mMYNtWws
ストアドってPGのたしなみとして
できて当たり前だと思うけど
今の新人は>>329みたいなのが
多いのか。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況