最初は無償データベースにてライセンス差額分の初期導入コストをカットしておいて、その差額を他のサービスに振り向けたり値引きに使い、段階的な非常に大規模になってきたなあと思ったら MySQL や PostgreSQL のチューンや Oracle、MS SQL Server への乗り換えを「ライセンスのコストやサポートに関するリスク、今後のメンテナンスのコスト」を含めて判断する、というご時世らしいですね。「景気が低迷する中でもユーザー企業はIT投資を
どうも、IN 句に弱いようです、MS SQL Server7 は。
WHERE a IN (SELECT a FROM table1 WHERE ....)
OR a IN (SELECT a FROM table2 WHERE ....)
OR a IN (SELECT a FROM table3 WHERE ....) OR a IN (SELECT a FROM table4 WHERE ....)
OR a IN (SELECT a FROM table5 WHERE ....)
なんてのがあると、各 table に合致する要素が一つづつでも、あっさりこけてくれるので、頭が痛かったりします。
ちなみに、EXISTS に置き換えても駄目。
他には、 WHERE NOT b IN (SELECT b FROM table6 WHERE ....)
というのも、重いですね。これは、仕方がないかもしれませんが。
フットワーク (スコア:1)
フットワークが軽いというのと、何よりもフリーというのが
大きいのでしょうね。重いくせに高い導入費用がかかり、
しかも不安定なRDBが以下に多いかということでしょう。
何も分からないSEがサポート漬けになって利
初期段階の投資費用を抑えるのに有効? (スコア:2, 参考になる)
最初は無償データベースにてライセンス差額分の初期導入コストをカットしておいて、その差額を他のサービスに振り向けたり値引きに使い、段階的な非常に大規模になってきたなあと思ったら MySQL や PostgreSQL のチューンや Oracle、MS SQL Server への乗り換えを「ライセンスのコストやサポートに関するリスク、今後のメンテナンスのコスト」を含めて判断する、というご時世らしいですね。「景気が低迷する中でもユーザー企業はIT投資を
Microsoft のおかげ? (スコア:1)
そして百家争鳴のデータベース市場で、ODBC の旗を振ったのは、、、どこの会社でしたっけ?
コンタミは発見の母
Re:Microsoft のおかげ? (スコア:2, 参考になる)
ソースの互換性が取れていればいい案件ばかりやってたせいもあるけれど、ODBCってあんまり使わないような気も。言語サイドが提供するミドルウェアに比べると、やはり1枚余計なレイヤがかぶるような気がして。
乗り換えの簡便性に貢献しているというと、やはりSQLじゃないでしょうか。
Re:Microsoft のおかげ? (スコア:1)
SQL 書ける人間なら COBOL 書ける人間並みに その辺に転がってますから色々と コキ使い^H^H^H^Hやりやすいです。
# でも弊社の若手は SQL を知らない。
# 未だ ISAM が幅をきかす職場だから... (T_T)
Re:Microsoft のおかげ? (スコア:1)
副問い合わせすらほとんど使ったことないので深奥が伺いしれない。
-- wanna be the biggest dreamer
Re:Microsoft のおかげ? (スコア:1)
かなーり、複雑怪奇なSQLがいっぱいです。
全部マスタする必要はないでしょうけど、
テーブルが二桁数あるクエリとか、
副問い合わせが5個とか、
そういうのは業務でよく出てくるとおもいますが・・・
SQLテクニックとは (スコア:1)
うーんそれとも、組み込み関数を使ってちょっとトリッキーなことを簡潔に書いたりするようなやつなのかなあ。
熟練というのはむしろ、オプティマイザのクセに通じることを言いませんか。オプティマイザはアホですし、かといってすべて明示的に制御することはできませんので、ダミーでどうこう書き足したりするような。
Re:SQLテクニックとは (スコア:1)
1:手続き型言語にばかり慣れていると、戸惑い易い。
アレして、"それから"コレして、"それから"ソレして、という世界にばかり慣れていると、
答え一発なSQL(というかRelational DB)のような世界で、かえって困惑する。
単純なSelect文だけなら平気でしょうけど、「ちょっと」複雑になると、もう…
2:もうちょっとSQLの文法が綺麗だったら、まだしも楽だったかも。
なんてな難点を感じています。
Re:SQLテクニックとは (スコア:1)
そんなもの、Cとlispとかでも同じでは。
> 2:もうちょっとSQLの文法が綺麗だったら、まだしも楽だったかも。
これはどういう意味なのでしょうか?
SQL92などの仕様にあるものが「汚い」ということなのでしょうか?
何をもって「汚い」と表現しているのでしょうか?
Re:SQLテクニックとは (スコア:1)
ははは(^^;;
ついさっきまで仕事でSQLカリカリ書いてましたけど、SQLが汚いっていうんなら、もっと汚い言語たくさんあると思いますけど。
あと、一般的な制作系の仕事してる分には手続き型言語使う方が圧倒的に多いと思うんですけど、そんなのブツブツ言っても意味無いのでは?
#個人的にはアセンブラが好き(笑)
Re:Microsoft のおかげ? (スコア:2, 参考になる)
で、MS SQL Server 7.0 があっさりギブアップしてくれるので、困ってたりします。
DB 毎の「癖」を把握して、うまく対応しないと、複雑な SQL はきちんと動かないことも実感できますね。
たかだか、WHERE に IN を並べただけで、なんで落ちるんだぁ? > MS SQL Server 7
Re:SQLテクニックとは (スコア:0)
そういうたとえを出すのなら、「C と Prolog とかでも同じでは」と書くべきでしたね。
Re:SQLテクニックとは (スコア:1)
そう、職人技と表現されるので曖昧模糊としています。
もちろん、複雑な SQL や、数学的に効率の良い SQL を 書くのに訓練がいるのは分かってます。
>熟練というのはむしろ、オプティマイザのクセに通じることを言いませんか。
あぁ、そういうことか。
CPUやコンパイラを意識しながら C を書くようなものですかね。メモリ1byte単位の効率やら、CPU命令ひとつ単位の高速化に意味があった時代があったっけ。分野によっては今でもかな。
-- wanna be the biggest dreamer
Re:Microsoft のおかげ? (スコア:1)
よろしければ実例を見せていただけるとありがたいのですが。
Re:Microsoft のおかげ? (スコア:0)
INに該当する項目が大量にあってメモリ不足とかになってるってオチでは?
書き方が悪いんじゃないかと...
MS SQL Server 7 の弱点? (スコア:1)
WHERE a IN (SELECT a FROM table1 WHERE ....)
OR a IN (SELECT a FROM table2 WHERE ....)
OR a IN (SELECT a FROM table3 WHERE ....)
OR a IN (SELECT a FROM table4 WHERE ....)
OR a IN (SELECT a FROM table5 WHERE ....)
なんてのがあると、各 table に合致する要素が一つづつでも、あっさりこけてくれるので、頭が痛かったりします。
ちなみに、EXISTS に置き換えても駄目。
他には、
WHERE NOT b IN (SELECT b FROM table6 WHERE ....)
というのも、重いですね。これは、仕方がないかもしれませんが。
せめて、2000 では、改良されていることを祈ろう。
Re:MS SQL Server 7 の弱点? (スコア:0)
Re:Microsoft のおかげ? (スコア:1)
Re:MS SQL Server 7 の弱点? (スコア:0)
Re:SQLテクニックとは (スコア:1)
下を見たらキリが無いです(^^;
わざわざ自分の仕事(趣味でも同じ原理だが)の質を下げるマイナス要因を、抱えておきたいとは思いません。
ところで、ぱっと見ただけなんですが、
http://leap.sourceforge.net/walkthru.htm
このLeapというDBMSで使われてる検索言語って、少なくともSQLよりは綺麗なような気がしました。
SQLって、英語の語順や前置詞とかに、変に引きずられてる節がありますよね。
自然言語に下手に似せようとする辺り、古臭い言語な匂いを感じます。
文法に、直交性だか対称性だかが乏しいっす。まるでBasicのよう…
>一般的な制作系の仕事してる分には手続き型言語使う方が圧倒的に多いと思うんですけど、そんなのブツブツ言っても意味無いのでは?
ですから、ほかならぬ(よく使う)SQLが、非手続き型なんですってば(^^;;
滅多に出会わないなら、それこそブツブツ言いませんって。
>#個人的にはアセンブラが好き(笑)
俺は嫌いです(笑)
汗はCですら書けないもの(ただし抽象度低い方角についてですが:逆に高い方角でもCではお手上げになるんで)のため「だけ」に有ると思いたいです。
パズルとしては面白いかも知れませんが、そういうのはパズルで時間を潰したい(ぉ)時にだけ触りたいです。