私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 総合 Part12

みんなの評価 : ○
レスフィルター : (試験中)
Middlegenという、DBに接続してDDLから各種設定ファイルとJavaクラスを出力ツールを使用しておりまして。
こいつがViewやPKがないテーブルを元に設定ファイルを出力すると、設定ファイルでは全属性をPKと見なす設定になってしまい、
カラムにnullの値を持つデータが存在するとViewから値がうまく取得できない現象が起きてしまうのです。。。
もともとのアプリではOracleを使用していたため、ViewにPK制約を付けて上記の現象を回避していたのですが、
自分の開発PC単体でもそのアプリを使えるようにMySQLを使用しようかと思い、MySQLでも同様の回避策が可能かどうか知りたくて質問させていただきました。
こいつがViewやPKがないテーブルを元に設定ファイルを出力すると、設定ファイルでは全属性をPKと見なす設定になってしまい、
カラムにnullの値を持つデータが存在するとViewから値がうまく取得できない現象が起きてしまうのです。。。
もともとのアプリではOracleを使用していたため、ViewにPK制約を付けて上記の現象を回避していたのですが、
自分の開発PC単体でもそのアプリを使えるようにMySQLを使用しようかと思い、MySQLでも同様の回避策が可能かどうか知りたくて質問させていただきました。
今来た。
今後の国内サポートとしては、なんか存在感無かったABから、用賀のサンマイクロ部隊になるのかな?
結局、商用で大規模になってくると、Sun+Oracle RACって営業的に儲かる方向に移行させられる気もするが。
それでもDB2/iシリーズに嵌め込まれるIBMよりは逃げ道ありそうだが。
今後の国内サポートとしては、なんか存在感無かったABから、用賀のサンマイクロ部隊になるのかな?
結局、商用で大規模になってくると、Sun+Oracle RACって営業的に儲かる方向に移行させられる気もするが。
それでもDB2/iシリーズに嵌め込まれるIBMよりは逃げ道ありそうだが。
テーブルuser_tblから更新順に10行のデータを取得する際
SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10;
でいけるのですが、仮にこの10行の中にuser_idがrootのものがあった場合、user_idがrootのものを並び順の一番上にしたいのですがどんな書き方があるでしょうか?
SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10;
でいけるのですが、仮にこの10行の中にuser_idがrootのものがあった場合、user_idがrootのものを並び順の一番上にしたいのですがどんな書き方があるでしょうか?
SELECT * FROM
(SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10) U
WHERE user_id = 'root'
UNION ALL
SELECT * FROM
(SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10) U
WHERE user_id != 'root'
;
ちょっと遅いけど
(SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10) U
WHERE user_id = 'root'
UNION ALL
SELECT * FROM
(SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10) U
WHERE user_id != 'root'
;
ちょっと遅いけど
ある条件を満たすレコードがあるかどうか を調べるとき
SELECT * FROM hoge WHERE 条件 LIMIT 1;
としてレコードの有無を調べる
SELECT COUNT(*) as count FROM hoge WHERE 条件;
としてcountが0かどうかを調べる
のどっちがより速いのでしょうか
SELECT * FROM hoge WHERE 条件 LIMIT 1;
としてレコードの有無を調べる
SELECT COUNT(*) as count FROM hoge WHERE 条件;
としてcountが0かどうかを調べる
のどっちがより速いのでしょうか
あるかどうか確認したあとに、今度はちゃんとしたselectを実行するだろうから、二度手間だよ。
それなら初めからちゃんとしたselectして、結果の件数を調べた方がマシ。
それなら初めからちゃんとしたselectして、結果の件数を調べた方がマシ。
>>973
扱える最大値が振られ続けるよ。
扱える最大値が振られ続けるよ。
すみません、ちょっと長いけどお願いします。
select tid as num,title,body,datetime from message where tid <> 0 order by datetime desc;
+------+-------+-----------+---------------------+
| num | title | body | datetime |
+------+-------+-----------+---------------------+
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
| 1 | NULL | rdfgfdxgg | 2008-01-24 11:33:16 |
+------+-------+-----------+---------------------+
select id as num ,title,body,datetime from message where tid=0 order by datetime desc;
+-----+--------------+----------+---------------------+
| num | title | body | datetime |
+-----+--------------+----------+---------------------+
| 3 | ゆゆゆゆゆゆ | xfgh | 2008-01-24 11:34:59 |
| 1 | Yahoo!JAPAN | aaaaa | 0000-00-00 00:00:00 |
+-----+--------------+----------+---------------------+
上記をUNIONでつなげると、下記のようになります。
+------+--------------+-----------+---------------------+
| num | title | body | datetime |
+------+--------------+-----------+---------------------+
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
| 1 | NULL | rdfgfdxgg | 2008-01-24 11:33:16 |
| 3 | ゆゆゆゆゆゆ | xfgh | 2008-01-24 11:34:59 |
| 1 | Yahoo!JAPAN | aaaaa | 0000-00-00 00:00:00 |
+------+--------------+-----------+---------------------+
これを、numの値が重複しないように取り出したいのですが、どうのようにすればいいでしょうか。
上の例だと、
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
の行を取り出したいです。
下のほうの行はもうnumが1のものと3のものがあるのでいりません。
select tid as num,title,body,datetime from message where tid <> 0 order by datetime desc;
+------+-------+-----------+---------------------+
| num | title | body | datetime |
+------+-------+-----------+---------------------+
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
| 1 | NULL | rdfgfdxgg | 2008-01-24 11:33:16 |
+------+-------+-----------+---------------------+
select id as num ,title,body,datetime from message where tid=0 order by datetime desc;
+-----+--------------+----------+---------------------+
| num | title | body | datetime |
+-----+--------------+----------+---------------------+
| 3 | ゆゆゆゆゆゆ | xfgh | 2008-01-24 11:34:59 |
| 1 | Yahoo!JAPAN | aaaaa | 0000-00-00 00:00:00 |
+-----+--------------+----------+---------------------+
上記をUNIONでつなげると、下記のようになります。
+------+--------------+-----------+---------------------+
| num | title | body | datetime |
+------+--------------+-----------+---------------------+
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
| 1 | NULL | rdfgfdxgg | 2008-01-24 11:33:16 |
| 3 | ゆゆゆゆゆゆ | xfgh | 2008-01-24 11:34:59 |
| 1 | Yahoo!JAPAN | aaaaa | 0000-00-00 00:00:00 |
+------+--------------+-----------+---------------------+
これを、numの値が重複しないように取り出したいのですが、どうのようにすればいいでしょうか。
上の例だと、
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
の行を取り出したいです。
下のほうの行はもうnumが1のものと3のものがあるのでいりません。
2005ExpressEditionで勉強し始めたばっかりなんですけど、
testdbという名前で作ったのをmanagement studioから消してもう一度
作ろうとすると
ファイル 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\
testdb.mdf'は既に存在するので作成できません
というメッセージが返ってきて作成することが出来ません。このファイルの
消し方、教えてください。
ちなみに alter database remove file testdb では
'file' 付近に不適切な構文があります。というエラーになっちゃってます。
testdbという名前で作ったのをmanagement studioから消してもう一度
作ろうとすると
ファイル 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\
testdb.mdf'は既に存在するので作成できません
というメッセージが返ってきて作成することが出来ません。このファイルの
消し方、教えてください。
ちなみに alter database remove file testdb では
'file' 付近に不適切な構文があります。というエラーになっちゃってます。
猛烈に誤爆 スマソ
MySQL4.0で構築したシステムがあるのですが、この度5.1に移行することになりました。
そこで、SQLを書き換えて副問い合わせを使おうと思っているのですが、
性能的にメリットってありますでしょうか?
副問い合わせのメリットって、何でしょうか?
副問い合わせは一度の実行で役目を果たすんで、内部でグリグリ操作するよりはマシなんじゃね。
メリットを聞かれてもバカなので分からんが、副問い合わせ使った方が楽じゃん。
メリットを聞かれてもバカなので分からんが、副問い合わせ使った方が楽じゃん。
>>989
これこれ、単純すぎ。
これこれ、単純すぎ。
大抵の場合、負荷は
アプリケーションサーバ < データベースサーバ
だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
Web企業的考え方。
データベースサーバは超ハイスペックなものを使っていて余裕有りまくり。
無駄なデータのやりとりするくらいならストアドプロシージャ/サブクエリでやってしまおう。
SI的考え方。
アプリケーションサーバ < データベースサーバ
だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
Web企業的考え方。
データベースサーバは超ハイスペックなものを使っていて余裕有りまくり。
無駄なデータのやりとりするくらいならストアドプロシージャ/サブクエリでやってしまおう。
SI的考え方。
>>993
>だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
スケーラビリティというのは辞書で調べたら拡張性と書いてありました。
つまり、副問い合わせを使わない方がプログラムがシンプルになって、
機能追加がしやすいというということでしょうか?
>それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
副問い合わせを使わないと、データベースサーバの分割をしやすくなるというのは
具体的には何故なのでしょうか?
初心的な質問ですいません。。
>だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
スケーラビリティというのは辞書で調べたら拡張性と書いてありました。
つまり、副問い合わせを使わない方がプログラムがシンプルになって、
機能追加がしやすいというということでしょうか?
>それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
副問い合わせを使わないと、データベースサーバの分割をしやすくなるというのは
具体的には何故なのでしょうか?
初心的な質問ですいません。。
彼が言いたいのは、トランザクション量に応じて処理量も伸びるかという事じゃないかな
もし不適切だったら誘導願います。
MacOS X 10.5.1
Server version: 5.0.51 Source distribution
データベースの文字コードはutf8にしています。
MacPortでインストールしました。
Terminal.appからmysql5 を起動してselectを実行した場合、結果の日本語
は正しく表示されます(Terminal.appとデータベース、mysql5の文字コード
は合っている)。
しかし、where句などに日本語を入力しようとすると ???? になりうまく行き
ません。
日本語を含むクエリをファイルにしておいて、mysql5に食わせるぶんには問題
ありませんが、日本語が必要なたびにこれでは煩わしすぎます。
どうすればうまく日本語入力できるでしょうか。
ちなみに、bash上では日本語入力もうまく行きます。
宜しくお願いします。
MacOS X 10.5.1
Server version: 5.0.51 Source distribution
データベースの文字コードはutf8にしています。
MacPortでインストールしました。
Terminal.appからmysql5 を起動してselectを実行した場合、結果の日本語
は正しく表示されます(Terminal.appとデータベース、mysql5の文字コード
は合っている)。
しかし、where句などに日本語を入力しようとすると ???? になりうまく行き
ません。
日本語を含むクエリをファイルにしておいて、mysql5に食わせるぶんには問題
ありませんが、日本語が必要なたびにこれでは煩わしすぎます。
どうすればうまく日本語入力できるでしょうか。
ちなみに、bash上では日本語入力もうまく行きます。
宜しくお願いします。


類似してるかもしれないスレッド
- MySQL 総合 Part13 (996) - [94%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part19 (982) - [94%] - 2011/6/9 2:33
- MySQL 総合 Part14 (1001) - [94%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part15 (1001) - [94%] - 2009/4/20 12:15 ☆
- MySQL 総合 Part17 (1001) - [94%] - 2010/6/10 20:47 ○
- MySQL 総合 Part18 (986) - [94%] - 2011/1/17 15:46
- MySQL 総合 Part22 (1001) - [94%] - 2012/7/10 16:45
- MySQL 総合 Part23 (992) - [89%] - 2013/8/11 17:00
- MySQL 総合 Part26 (860) - [89%] - 2023/2/2 9:30
- MySQL 総合 Part21 (1001) - [89%] - 2011/12/25 22:16
- MySQL 総合 Part20 (995) - [89%] - 2011/10/17 4:48
- MySQL 総合 Part24 (1010) - [89%] - 2015/2/14 4:46
- MySQL 総合 Part25 (947) - [89%] - 2017/6/18 6:30
- MySQL vs PostgreSQL Part2 (941) - [36%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について