MySQL 総合 Part13 at DB
[2ch|▼Menu]
1:NAME IS NULL
08/01/30 03:49:10
快速 RDBMS、MySQL の総合スレです。
前スレ[MySQL 総合 Part12] スレリンク(db板)
[関連スレと過去ログ]
URLリンク(find.2ch.net)
URLリンク(makimo.to)

[MySQL Developer Zone] URLリンク(dev.mysql.com)
[MySQL 日本語リファレンスマニュアル] URLリンク(dev.mysql.com)
[MySQL Internals Manual] URLリンク(dev.mysql.com)

[MyNA] URLリンク(www.mysql.gr.jp)
[MLja] URLリンク(lists.mysql.com)

ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。
URLリンク(www.mysql.gr.jp)
MyNAでの「心得の条」
URLリンク(www.mysql.gr.jp)

・関連ツール及びユーティリティ
・関連書籍
>>2

  | .| /./  /      |   | _,,,,||,,,l.,,_ ト      /  | _ |    .|   /
.  | | .| |  l      .| .,-'|.l  .|l .| `|. l     '  /´ /    /   /
  | | |.|  .|      , |´ | .|  | _|,_ l .|      ./  ''`ト  ./  /
  | | |.|  |       |  .| |_,,l-,─-.,_、_ |     /   .λl,/   /
.  |. |. ||  |       .| | /::::l  ヽ `'' |   / ,  ,.ミ,|´|   ./
,,,__.| .| ヘ .|        | .|/ |:i::::::〉., ノl  | /  .//  ∨| /
  `'' ‐ 、l |        .|||l'l:|:|l:::::`':::::i´||  ''    /   ...:::::l..''
      .`ヽ、       |:| ヾl.ヾ::::::::::| .||        :::::::::  l
        .\_    -''lヾ ヘ:、.ヘ;;_;ノ ノレ            .l
          .ヾ=,,,_   .ヘ  ,ヾ_,,=..''´....      _,,,   /
           ヽ .i'`''‐--.〉''´  .ヽ::::::::  _,,, -‐'''´:::::l ./.|      drop tableは1日10回な!
.\          ヽ`ニ /     l.   /:::::::::::::::::::::::/ i''ヘ .l
  `ヽ         .l-‐''l      /   .l:::::::::::::::::_;;-ヘ l ヽ ヘ
   ./.`iヽ       .|ヽ|     ./ ,,,,,,,_.ゞ,,, -‐''ヽ. |.| .| ヾ.、.ヽ
  / /|.| ヽ      .| .|    /ヽ     /:::::ヾ .| ,l '| .l.l '|ヽ.、.ヽ
// /./.|,, -'''''''''''''''-.、.'-<    .|  ヽ   /:::::::::lト''´ .| | | .i.| .ヾ.、.ヽ
/ / /./        ヽ,.`   .l   ヽ,'ノ/ ヾ_;;;l.l   |/ .l l |  ヾ.、lヘ
  ./ .//l          i    |    .ヾ   |:::::|.|  .|' l//   i.|| i.|

2:NAME IS NULL
08/01/30 03:49:54 Q+2wuCXB
【関連ツール及びユーティリティ】

[phpMyAdmin] URLリンク(www.phpmyadmin.net)
[phpMyBackupPro] URLリンク(www.phpmybackuppro.net)
[MySQLCC] URLリンク(www.mysql.com)
[MySQL-Front] URLリンク(www.mysqlfront.de)
[mytop] URLリンク(jeremy.zawodny.com)
[Common SQL Environment] URLリンク(www.hi-ho.ne.jp)

MySQL ABでの各種GUIツールはMySQL GUI Toolsとして統合されています
(WorkbenchはGUI Toolsから独立しました。)
URLリンク(dev.mysql.com)
・MySQL Administrator
・MySQL Query Browser
・MySQL Migration Toolkit

URLリンク(dev.mysql.com)
・MySQL Workbench

【関連書籍】

[MySQL Books]
URLリンク(dev.mysql.com)
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

3:NAME IS NULL
08/01/30 15:44:59
スレ立て乙です>1

全スレ997の者です。
.inputrcに
set convert-meta off
set meta-flag on
set output-meta on
を記述してTerminal.appは再起動、bash上では日本語の入力は出来ています。
$ echo 漢字
漢字

mysql5の使用中のみ、漢字入力が?????になるのです。
mysql> select * from jpzip where area='???';
Empty set (0.71 sec)

(神奈川県、って入力してます)

お知恵拝借願います。
MacOS X 10.5.1
MySQL Server version: 5.0.51 Source distribution


4:NAME IS NULL
08/01/31 01:09:20
DB初心者です。
GROUP BY について質問があります。

----TABLE_A----
|DataA|DataB|DataC|
------------------
| AAA | WWW |1111
| BBB | XXX |2222
| AAA | YYY |3333
| DDD | ZZZ |4444

この様なテーブルがあった場合に、DataAカラムがAAAの物を選び出し、
更にDataCの中の最大値を調べ、最大値となった行のDataBを抜き出す方法はあるのでしょうか?

自分でやってみた方法として以下の様なSQLを試してみたのですが
SELECT DataB MAX(DataC) FROM TABLE_A WHERE(DataA=AAA) GROUP BY DataA
このSQLだとDataBのカラムがMAX(DataC)と同じ行の値にはならない様です。
なにか句が足りないのでしょうか?

また、上記の抽出をDataAがAAAであるカラムに限定せずに行いたいのですが、何か良い方法はありませんでしょうか。
具体的には以下の様な抽出結果を求めています。

----結果----
|DataA|DataB|DataC|
------------------
| AAA | YYY |3333 (AAAグループの中の最大値を持つ行を抽出)
| BBB | XXX |2222 (BBBグループの中の最大値を持つ行を抽出)
| DDD | ZZZ |4444 (CCCグループの中の最大値を持つ行を抽出)

5:NAME IS NULL
08/01/31 01:16:45
>>4です

すいません。スレ間違えました><
SQL質問スレにいってきます。

6:NAME IS NULL
08/01/31 01:39:20
Maria ってどんなかんじですかね?
URLリンク(journal.mycom.co.jp)

7:NAME IS NULL
08/02/01 02:19:12 7TNjcR3o
SELECT COUNT(id) AS id_num FROM test WHERE id_num>'1'

をすると、エラーになります。
COUNTした場合、WHEREを使って抽出出来ないのでしょうか?
ORDER BYでソートするのは出来ます。

MySQLのバージョンは4.1.22です。

8:NAME IS NULL
08/02/01 09:36:59
>>7
何をしたいのか今ひとつわからんけど
カラム id の値が重複したレコードの件数を取得したいなら
こんな感じかな
select id, count(*) from test group by id having count(*)>1;

9:NAME IS NULL
08/02/01 09:42:53
>>7
COUNT()値の様な条件判定はHAVINGに記述するのが
SQLでは基本です。

10:7
08/02/01 11:39:10
>>8-9
WHEREじゃなくて、HAVINGなんですね。知りませんでした。

HAVINGを使うとやりたいことが出来ました。ありがとうございました。

11:NAME IS NULL
08/02/02 15:19:29 ff4pjUXH
1レコード追加毎に「code」フィールドに
ユニークな文字列を追加したいと思っています。

PHPを使わずに、MySQLの関数のみでその様な事って、出来ないでしょうか?
(オートインクリメントではないです)

12:NAME IS NULL
08/02/02 15:28:18
>>11
トリガでUUID()を入れるってのはどう?
URLリンク(dev.mysql.com)
レプリケーションでダメと書いてあるが。
どうだめなのかよくわからんな。

13:NAME IS NULL
08/02/02 16:13:54 ff4pjUXH
>>12
ありがとうございます。UUIDを使ってみます。

14:あやか
08/02/02 18:39:32 qcb6dBmi
すみません。Excelで唐突な質問なのですが。。。

実は今、会社の売上表のデータ確認作業をしているのですが、
ある製品のみ計算式とは違う値が入っているのに気付きました。
セルには、計算式「=ROUND(0.004*A2),2」と入っているのですが、
その値が、=0.004*A2の値でないものが入っているんです。

その値は、計算式による値よりも、すべて14.925多く、
明らかに故意による操作と思われるのですが、
エクセルの機能で、計算式を表示させながら、別の値の数字を表示させるなどと
いうことは可能なのでしょうか???

どなたかご存知でしたら教えてくださいませM(__)M

15:NAME IS NULL
08/02/02 19:06:52
君の使ってるのは Myエクセール?

16:NAME IS NULL
08/02/02 19:57:50
>>14
このへんかな?
Excel総合相談所 64
スレリンク(bsoft板)

17:あやか
08/02/02 21:17:46 qcb6dBmi
NAME IS NULLさん ありがとうございます。
そちらで質問してみますね。

18:NAME IS NULL
08/02/02 21:43:52
真性のアホだろおまえ

19:NAME IS NULL
08/02/03 00:30:57
何だとコノヤロウ

20:NAME IS NULL
08/02/03 14:49:01
なぜ、MySQLは2つ以上のインデックスを同時に使えないのですか?

21:NAME IS NULL
08/02/03 23:03:38
>>20
MySQL 5.0以上なら複合インデックスが使える。
URLリンク(labs.unoh.net)

22:21
08/02/03 23:25:09
複合インデックスじゃなかった、インデックス結合ね。

23:NAME IS NULL
08/02/04 02:33:44
ちょっと質問です。数値とか文字列の型についてなんですが、

例えば、
select 0x4142 ;      # <-- AB 
select 0x4142 + 0 ; # <-- 16706
select cast(0x4142 as unsigned) ; # <-- 16706
となると思うんですが、

これを、ユーザー定義変数にsetしてからやると、
SET @aaa = 0x4142;
select @aaa ;      # <-- AB
select @aaa + 0 ; # <-- 0
select cast(@aaa as unsigned) ; # <-- 0
となってしまいます。

これは、マニュアルなんかによると、set @var = *** で文字列として @var に格納されてしまうからと思うんですが、
変数にSETしつつ、この16進なデータを’数値’として認識させせることは可能でしょうか?

マニュアルの関係ありそうなところを、ずっと(5時間位)探してるんですが、それらしきものを見つけられません。
ちなみにVersionは、5.0.50-Win32です。

24:NAME IS NULL
08/02/04 22:55:26
インデックス複数張ってるとき、思ったとおりのインデックスを
使ってくれないときに「これ使え」って指示するのってなんだっけ?

25:NAME IS NULL
08/02/04 23:12:50
>>24
FORCE をつかえ。

26:NAME IS NULL
08/02/04 23:19:03
>>23
select conv(hex(@aaa),16,10); で良いか?

27:NAME IS NULL
08/02/05 00:13:49 h+XFJgnD
SELECT id FROM aaa LEFT JOIN bbb USING(id)

というSQLで、aaaテーブルとbbbテーブルを結合しています。
LEFT JOINにしているのは、aaaテーブルに登録されている値が
すべてbbbと連結しているわけではないからです。

上記のSQLに
「bbbテーブルのtypeが1であれば、nameが存在する必要がある(NULLは駄目)」
という条件式を入れたいのですが、どのように書けばいいのでしょうか?

IF(bbb.type=1,bbb.name IS NOT NULL)
を追加しても、上手くできませんでした。


28:NAME IS NULL
08/02/05 00:24:27
>>24
USE KEY (…)

29:NAME IS NULL
08/02/05 02:09:38
>>25
マスター・ヨーダ乙

30:NAME IS NULL
08/02/05 03:08:42
>>26
うおー、でけたー!!!
すごく感動しました。

31:NAME IS NULL
08/02/05 21:10:48 s4DX1xog
質問させてください。以下のテーブルがあるとします
id |name |photo |class
----------------------
1 |yamada |0 |4
2 |tanaka |1 |4
3 |miyata |0 |4
4 |tukaji |1 |4
質問1:
上記のテーブルに select * from `tbl` where `class`=4 order by `photo` desc
とした場合に返ってくる結果って、idの値の大小はキープされたままですよね?
(tanaka,tukajiの順番で…) この認識でOKでしょうか? 一応テストはしたんですが、、

質問2:
上記のselect文のようにphotoの値を降順にして、なおかつidも降順で取得する方法って
ありますか?
優先順位は、photoの値が降順>idの値が降順 です

ど素人なので、質問自体意味不明だったらすみません
回答をよろしくお願いします

32:NAME IS NULL
08/02/05 21:50:28 BphyAXBx
order by photo desc,id desc

33:NAME IS NULL
08/02/05 21:51:17
>>31
order by phpto,id

34:NAME IS NULL
08/02/05 22:07:34
>>32-33
ありがとうございます!
質問1の疑問についても、間違ってないってことでいいですよね?
ありがとう


35:NAME IS NULL
08/02/05 22:16:37
>>34
1は間違い

36:NAME IS NULL
08/02/05 23:41:13
>>35
まちがってますか?
すみません、どう間違っているのか教えてもらえませんか?

37:NAME IS NULL
08/02/05 23:57:13
order by で指定していないカラムの順番はDBにお任せ
現在望む形で取得できているのはたまたま

38:NAME IS NULL
08/02/06 01:01:43
>>27
SELECT id FROM aaa LEFT JOIN bbb ON aaa.id=bbb.id AND (bbb.type != 1 OR name IS NOT NULL)

39:NAME IS NULL
08/02/06 04:26:35
PHP、PDO、MySQLでWebソフトウェアを作成する際の質問です。

自宅の同環境で作成し、問題なく度鬱していたPHPソフトウェアをレン鯖(coreserver.jp)にアップしたところ、
PDOのprepareステートメントでエラーが発生してしまって困っています。

具体的には
$pdo = new PDO(接続文字列)
$stmt1 = $pdo->prepare(クエリ);
$stmt2 = $pdo->prepare(クエリ);
$stmt3 = $pdo->prepare(クエリ);

$stmt1->execute();
$stmt2->execute();
$stmt3->execute();

等と複数のprepareステートメントを作成し、利用しようとした時にエラーになってしまうようです。(原因とは限りませんが)

PHP、PDO、MySQLの組み合わせた場合、設定等によってprepareの同時作整数に制限等が出る場合はあるのでしょうか?
また、複数のprepareステートメントを作成して利用する方法自体について、Webソフトウェア並びに、MySQLの使用方法として、
問題があるのかどうか等、ご教示願えませんでしょうか。

40:NAME IS NULL
08/02/06 19:20:32
39です。
自己解決しました。ありがとうございます。

41:NAME IS NULL
08/02/07 13:40:29
>>37
ありがとう そういうものなんですね 助かりました

42:NAME IS NULL
08/02/08 17:36:51
ユーザーidとゲームidと時間のデータがあります。
ゲームidごとに、同じユーザーのデータが入ったりしています。

仮にuserid ,gameid,updatetimeとします。


この中から、ゲームid関係無く
ユーザーidと、そのユーザーidの持っている時間が最も早いもの
だけを取ってきたいのですが何か良い方法はありますか?

43:NAME IS NULL
08/02/08 17:43:26
userid , MAX(updatetime)

GROUP BY userid

では?
MAXだかMINだか正確ではないけど。

44:NAME IS NULL
08/02/08 17:44:07
select userid,min(updatetime) from hogeTBL group by userid

45:NAME IS NULL
08/02/08 17:44:39
あらら
カブりスマソ

46:NAME IS NULL
08/02/08 17:48:59
MINとかMAXとか便利なものがあるんですね

ありがとうござました


47:NAME IS NULL
08/02/08 19:05:23
君はDBって何をするものだと思ってたの?

48:NAME IS NULL
08/02/08 19:11:57
夢がいっぱい詰め込まれているもんだと思ってました

49:NAME IS NULL
08/02/08 20:10:31
DBといったら、7ヶ集めて願い事をするものだ。

50:NAME IS NULL
08/02/08 20:14:24
身長165
体重120

51:NAME IS NULL
08/02/08 20:53:48 ENc+AoR0
で・ぶ w

52:NAME IS NULL
08/02/09 00:09:04
>>48
ああ、確かに見るからに頭は空っぽだね。

53:NAME IS NULL
08/02/09 00:48:34
なんというHEAD-CHA-RA

54:NAME IS NULL
08/02/09 18:33:21
mysql4.1.22のインストールなんですが、環境設定?で最後の4項目のうち

・Prepare configuration
・Write configuration file

まではいくのですが

・Start service
・Apply security settings

が、行なえません。(チェックが入らない。また、パスワードを入力する画面が無いまま「Execute」の画面にいってしまう)

どうすれば良いのか、もしくはどういった点を調べれば良いのか教えて下さい。

55:54
08/02/09 18:50:49
説明が難しかったので…

URLリンク(www.ddsystems.info) の 『 Install As Windows Service 』
にチェックが入っていません。(選択出来ないようになっている)

URLリンク(www.ddsystems.info) の画面にいきません。

URLリンク(www.ddsystems.info) の上2つしかチェックが入りません。

自分のパソがwin98だからでしょうか?なにか参考になるサイトなどありましたら教えて下さい。

56:NAME IS NULL
08/02/09 19:19:24 lDXdLt0j
>>55
サービスというのはXP NT 2000向けの話
98ではサービスとして起動させるのは出来ない。

57:56
08/02/09 19:23:16 lDXdLt0j
追加 ここでも読んでみて
URLリンク(dev.mysql.com)


58:NAME IS NULL
08/02/09 20:42:01
>>56,57
ありがとうございます。熟読してきます。

59:NAME IS NULL
08/02/09 21:43:48
smallint(6)
ってどういう意味?
32ビットなのに6バイト使うの?
許されるの?

60:NAME IS NULL
08/02/09 22:40:33
表示桁数のことじゃ、ボケ

61:NAME IS NULL
08/02/10 00:12:39
>>60
知ったか乙
5桁しかねーだろwww

62:NAME IS NULL
08/02/10 12:29:37
ER図とMySQLの連携ができるフリーツールを探してます。
>>2に記載されてませんでしたが、DBDesignerというソフトがあるそうです。

もし使われている方がいましたら、教えて頂けないでしょうか。
MySQL4.1、5.0でも DBDesignerは使えるのでしょうか?
バージョンアップされてないから心配してます^^;

困っているのは
 接続できますが、モデルが開けません・・・orz
ということです。

これは、DBDesigner4はMySQL4.1以降には対応していないって事でしょうか。
フリーでかなり良さそうなツールだったので、ダメならすごく残念。

どなたか、ご存知でしたら、どうぞ教えてください。

63:NAME IS NULL
08/02/10 16:50:13
>>61
ヒント。負数

64:NAME IS NULL
08/02/11 21:16:14
KURAMAE

65:NAME IS NULL
08/02/12 00:05:59 tZT7Xc+W
mysqlで日本語が表示されません(文字化けではありません)

今、 URLリンク(allabout.co.jp) ここやってます。
ファイル名:tab1.txt

create table tab1 (number int(10) unique not null,name char(40) not null,note char(60));
insert into tab1 values(1,'abcdefg','apple');
insert into tab1 values(2,'hijklmn','banana');
insert into tab1 values(3,'opqrstu',"");
insert into tab1 values(4,'vwxyz',"pine");
insert into tab1 values(5,'あいうえお',"日本語もOK");
insert into tab1 values(6,'かきくけこ',"漢字");

で、select * from tab1;すると、日本語部分(5と6)が表示されません。
my.iniでは[client]、[mysql]、[mysqld]の下に
default-character-set=utf8 を足しました。

66:NAME IS NULL
08/02/12 00:28:15
>>65
WindowsでUTF8を表示できるのか?

[client]、[mysql]はcp932で
[mysqld]だけutf8にするんじゃない?


67:65
08/02/12 00:53:50
>>66
ダメでした。全部cp932と全部sjisなど試しましたが、表示されません。
???みたいに出てくれれば良いのですよね?自分の場合、該当部には何も表示されません。

68:NAME IS NULL
08/02/12 09:18:15
サロゲートペアの対応はどうなってんの

69:NAME IS NULL
08/02/12 16:00:40 nqXO5xFa
メンテナンスの際などにローカルの mysql の root@localhost
からの接続しか受け付けないようにするために簡単な方法はありますか?
一応 iptables で遮断したりして外からのアクセスは受けないように
したりして気をつけてるんですが,根本的な解決になってないような気がして.

70:NAME IS NULL
08/02/12 16:26:29
>>69
iptables で全ポートふさいだなら、出入り口無くなってるんだから十分では。

71:NAME IS NULL
08/02/12 16:32:47
>>69
LANの線抜いて、直結のコンソールからメンテ。
これで >>69 しかいない夢の世界。

72:NAME IS NULL
08/02/12 17:12:59 nqXO5xFa
UNIXソケット経由での接続もあるかも,とか,疑心暗鬼に.
FLUSH TABLES WITH READ LOCK;
で固めてしまっても,ダンプからの回復とか
しようと思うと結局 UNLOCK TABLES; しないといけないし.

73:NAME IS NULL
08/02/12 17:34:31 nqXO5xFa
普通のアプリは unix ソケット経由じゃないから
TCP ポート使わないようにしてデーモン上げ直して
ローカルコンソールから mysql コマンド
(これは unix ソケット経由で接続?)でメンテすればいいか.
別にローカルコンソールじゃなくても SSH 経由でもいいけど.

74:NAME IS NULL
08/02/13 23:03:56 kRFJlRI3
質問です。
PHPからSQLコマンドを叩いてINSERTする際に、そのこれからINSERTする行のidを知るにはどうすれば一番効率的でしょうか。

75:NAME IS NULL
08/02/13 23:35:04
ここはQueryBrowserのこと聞いても大丈夫でしょうか?

76:75
08/02/13 23:39:08
QueryBrowserで、右側のテーブル名ダブルクリックすると、上のクエリ窓に
SELECT * FROM [テーブル名] [テーブル名のイニシャル]
が出ますよね?
それで、ある一部のテーブル名だけ
SELECT * FROM '[テーブル名]' [テーブル名のイニシャル]
とシングルクオートで囲まれて出てきます。
このせいでアプリケーションでの検索ができません。
何が原因でしょうか?テーブル作成時もほかのテーブルと同じように作ったのですが・・・

77:NAME IS NULL
08/02/14 00:03:53 W0dvrvI0
>>76
テーブル名何よ?

78:NAME IS NULL
08/02/14 00:10:31
>>77
inner と outer です。
これ予約語かなんかなのでしょうか?
bgm とか frame とかは問題ありません

79:NAME IS NULL
08/02/14 00:52:32

新しいデータエンジンFALCONではトランザクション内でセーブポイントを
セットすることができるらしいのですが、
このセーブポイントて何に役に立つのでしょうか?


80:NAME IS NULL
08/02/14 02:24:45
セーブポイントって教会だけだっけ?

81:NAME IS NULL
08/02/14 03:44:12
宿屋に泊まってもセーブできるお

82:NAME IS NULL
08/02/14 09:10:23 +eBGuLyL
>>81
あれ,そうだったけか.
すでにすっかり忘れてるな,俺.
最近はケータイでできるみたいだしやってみるか.

83:NAME IS NULL
08/02/14 09:32:46
希望のほこらでも出来るよ

84:NAME IS NULL
08/02/14 11:41:28
>>78
予約語。
JOINの時使うでしょ?


85:NAME IS NULL
08/02/14 11:54:13
>>84
そうなのですか。JOIN使ったこと無かったのでわからなかったです。
ありがとうございました

86:NAME IS NULL
08/02/14 16:49:03 DlPYtTfB
自己結合したものをinsertで挿入していきたいのですが、
そのとき、それぞれに上からnumberをつけることはできませんか?
できるならどのようにすればいいか教えてください。

87:NAME IS NULL
08/02/14 23:38:43
すみませんが、質問です。

MySQLでEXPLAIN を実行すると、実行プランは表示されますが、実際にかかっ
た時間は表示されません。
クエリの各部分の実際の実行時間はどうやったら取得できるのでしょうか?
(PostgreSQL の EXPLAIN ANALYZE に当たるような機能のことです)

88:NAME IS NULL
08/02/15 00:34:57

MySQLでコネクションプールを使うと性能が良くなると聞いたのですが、
コネクションプールとは具体的に何のことでしょうか?

いろいろネットで調べてみたのですが、説明が難しくていまいち理解ができないです。。
自分のイメージとしては、通常クライアントから接続がある度にスレッドを生成しているものを、
コネクションプールというものを使って、最初からスレッドを生成しておき、
それを使いまわすというイメージでよいでしょうか?


89:NAME IS NULL
08/02/15 06:28:27
>>87
MySQLクライアントでそのまま実行したらでるけどそれじゃだめなん?

mysql> select * from customer where c_id = 400;

10 rows in set (0.32 sec)

>>88
あってるよそれで。
でもMySQLは新規接続もともと速いから性能向上度合いは少ないよ。
Oracleだと新規接続0.1秒とかかかったりするのでコネクションプール必須。

90:NAME IS NULL
08/02/15 17:03:12 vc/j93id
where amount1+amount2 > 2000

だとインデックスは使われないですが、何か良い方法はないでしょうか

91:NAME IS NULL
08/02/15 17:10:08
>>79
InnoDBにもあるよ > savepoint

トランザクションを入れ子にしたいと思ったことがある人には有用

92:87
08/02/15 17:41:17
>>89
> MySQLクライアントでそのまま実行したらでるけどそれじゃだめなん?

ありがとうございます。残念ですが、あまり良くないです。
SQL全体にかかった時間ではなく、細かい実行プランが表示されて、その各パー
トでそれぞれどれだけ処理時間がかかったかを見たいのです。


93:NAME IS NULL
08/02/15 18:35:46 cVT3m7qO
他のPCからもMySQLにアクセスできるようにしようと思ってとりあえず
以下のようにテストユーザーを作ってみました。

grant all on *.* to testUser identified by 'test';
そして、以下でログインできました。
mysql -u testUser -h 127.0.0.1 -p

ですが、ローカルから以下のようにするとパスワード無しでログインできてしまうのですが、パスワードは利かないのでしょうか?
mysql -u testUser

宜しくお願いします。
(mysql5.0.54)


94:NAME IS NULL
08/02/15 19:05:33
自己結合させて、できたときに上から順番に番号ふっていきたいんですが、
どうしたらよいでしょう?

95:NAME IS NULL
08/02/15 19:40:20
MySQL InnoDBのテーブルを mysqldump でバックアップする場合、mysqldは止める必要はあるのでしょうか?

96:NAME IS NULL
08/02/15 21:04:18
selectでmtimeで降順ソートしたデータの11番目から配列に格納したい。どのようにwhere節を記述すればうまくいくでしょうか。
以下カラム
id : name : titlebody :mtime : (modification time)

97:NAME IS NULL
08/02/15 21:05:19
訂正です。「配列に格納したい」っていうのを「データを表示したい。」に読み直してください。すいません。PHPと連携してるもんで、、、

98:NAME IS NULL
08/02/15 23:58:00
select id, name, titlebody, mtime from hogeTBL order by mtime desc limit 10,(取得する行数);

99:>>88
08/02/16 08:57:40
>>89
ありがとうございます。

>>95
mysqldとめたら、mysqldumpできないんじゃあるまいか?


100:NAME IS NULL
08/02/16 13:34:51
MySQLにファイル入れて管理したいと思うのですが、
I/Oとかどんな感じでしょうか。

ファイルではなく、
普通に数百MBのデータベースを処理するだけで、
かなりI/Oがあがってしまい、CPUとかメモリには余裕があっても
かなり速度が遅くなってしまいます。
データベースで管理すると管理面で便利そうな反面、
ここがボトルネックになりそうな気がしてます。

識者の方アドバイスおながいします。

101:NAME IS NULL
08/02/16 17:01:59
>>100
数百MB程度で遅いのなら、インデックスが適切に作成されていない可能性あり。

「ファイル入れて」って、「本来ファイルにあるべきデータをテーブルに入れて」って意味?


102:NAME IS NULL
08/02/16 17:04:40
>>94
set @cnt=0;
select @cnt:=@cnt+1,col1,col2,col3 from tbl1, ......


103:NAME IS NULL
08/02/16 17:06:11
centos5でmysql4,1を使っています。
mysqldを削除してしまいました。
yumでmysql-serverをインストールしても見つからないのですが、
mysqldはどこで落とせますか?

104:NAME IS NULL
08/02/16 20:03:14
>>100
説明内容が複数の意味に取れる部分が多すぎて、
内容がはっきり掴めません。
動画ファイルの扱いなどで例えてください。

105:NAME IS NULL
08/02/16 22:43:10
ガンダムに例えると

106:NAME IS NULL
08/02/17 00:47:28 lcJDrNJv
winで、perlからmysqlを使っているのですが、
insert into a(a) value("あ");
コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。

107:NAME IS NULL
08/02/17 00:51:27
そらぁ、Perlの方の問題であって、ここの問題じゃないっしょ

108:NAME IS NULL
08/02/17 01:56:04
>>106
文字コード

109:NAME IS NULL
08/02/17 19:27:17
>>106
「うまくいきません」を具体的に。

110:NAME IS NULL
08/02/17 22:02:44 mw1ACUy/
ゆりしー(´;ω;`)かわいそうです みなとらじお 君が主で執事が俺で 02
URLリンク(www.nicovideo.jp)

伊藤静「じゃあ、次もwww」
後藤邑子「斬ったほうがいい?www」
伊藤「次は斬る?www」
後藤「どうするww」

伊藤「ペンネーム『心が綺麗な天使』から頂きましったww(フンッwww) 私はこの日本に住むのにはピュアすぎます。どのようにしたら天使のような私がこの今の日本に馴染めるのでしょうか?」

後藤「.........ウザい」

二人「キャッハハハハハwwwww」

伊藤「ちょほんとさあ、大丈夫?www」

後藤「おい天使、おいおい自称天使ww」

伊藤「自分が天使だと思ってること自体がちょっと間違ってんじゃないの?っていうねwww」

後藤「うん。ね。ちょっと軽く(精神病院に)通院してみたほうがいいんじゃないの?www もしくは、今の日本に馴染めるようにちょっと汚れちゃえよwwww」

伊藤「それかもう日本出て行ったらいいんじゃないの?www」

後藤「天使が住める国にwwwwwww なんかエルフの国とかに行ったらいいんじゃないの?wwww」

伊藤「妄想の中とかに(プフッww)行っちゃえばいいんじゃないのwww」

後藤「コワイヨーwwwコワイヨーwwwww」

二人「クックックックwwww」


111:NAME IS NULL
08/02/17 22:15:36
>>110
オレが責任をもってゆりしーを嫁にするから、板違いな話題は控えてくれ

112:NAME IS NULL
08/02/18 11:34:56
すみません、質問させてください。

まずは環境を。
OS:CentOS release 4.6 Linux version 2.6.9-55.0.12.ELsmp
MySQL:4.0.27

やりたいことは、mysqlとWebデータのバックアップを1日1回で取りたく、
ググルで『mysqldump .sh』などで検索し、それを参考にbackup.shという名称で以下を作ってみました。

#!/bin/sh
cd /home/hoge
tar zcvf /mnt/nas/web-backup/`date +%Y%m%d`/hoge.tar.gz ./web
tar zcvf /mnt/nas/web-backup/`date +%Y%m%d`/hoge-cgi.tar.gz ./cgi-bin
mysqldump -uroot -phoge hoge --opt > /mnt/nas/web-backup/`date +%Y%m%d`/hoge.sql

パーミッションを700に変更し、crontabに登録。
結果、hoge.tar.gzとhoge-cgi.tar.gzはバックアップが取れているのですが、
SQLデータだけファイルサイズ0でバックアップを取れません。

cronではなく手動で、/home/hoge/backup.sh とやるとSQLデータもキチンと取れます。

まずはどこから疑ったら良いでしょうか?
宜しくお願い致します。

113:NAME IS NULL
08/02/18 13:18:00
手動で backup.sh を叩いて動いたときのユーザが root ではない、とか

114:NAME IS NULL
08/02/18 13:19:48
>>113
ごめん取り消し
mysqldump のパスが通ってないだけとか

115:NAME IS NULL
08/02/18 13:26:28 Ev8JrmO8
Handler_read_rnd_next が異様に高いのだが(500Mとか)
この原因を突き止めるにはどうすればいいのだろうか.
でかいウェブアプリで,どの処理がこいつの原因に
なっているのかわからず途方に暮れています.

とりあえずチューニング中です,とか何とか言って
ごまかしているけど.

116:112
08/02/18 15:52:54
>>114
有難う御座います。
パスが通っていないのが原因みたいです・・・orz

/usr/local/bin/mysqldump -uroot -phoge hoge --opt > /mnt/nas/web-backup/`date +%Y%m%d`/hoge.sql
に改めたところ、ちゃんとデータが入ったファイルが生成されました。

今まで気にしたことが無かったのですが、いつもは echo $PATH でパスの通りを確認した時
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:(以下略
と、『/usr/local/bin』の記述があるのでパスが通っているものだと思っていたのですが、
crontabの時はrootとは別の.bash_profileが機能しているのでしょうか?

ついで質問で申し訳ないのですが、ご教授いただけますでしょうか?
宜しくお願い致します。

117:NAME IS NULL
08/02/18 19:59:30
>>116
mysql じゃなくて unix の話になっちゃうけど、、、
cron で起動した場合は root ユーザがログインして実行する訳じゃないから
.bash_profile は読み込まれない
必要な環境変数は crontab ファイルの中に記述するか
起動されるスクリプトの中に書いておく

118:112
08/02/18 20:44:41
>>117
すみません、『ここはMySQL板です』って言われるの覚悟だったのですが
話の流れでお聞きできればとおもったので。
/etc/crontabの中にもPATH=設定があるんですね・・・勉強になります。
ご教授有り難う御座いました。


119:NAME IS NULL
08/02/18 20:47:17 DnOVHGDT
大規模サイト作ってる最中なんだけど普通DBは一個だけでいいよね?

120:NAME IS NULL
08/02/19 08:34:43
>>119 どのぐらいが大規模かテーブル数ぐらい書かないとなんともいえないぞ
1つのDBでやる必要性と複数DBがもてるのかどうか
ただ、モールのように複数店等やる場合セッションの引き継ぎ等で
同一DBでやる場合もあるから一様にいえないよね

121:NAME IS NULL
08/02/19 11:57:30
そんな質問してるぐらいだから1個でいいにきまってんじゃん

122:NAME IS NULL
08/02/19 12:51:39
>>120
今はとりあえずプロトタイプとして10涸ほどテーブル持ってる感じ
カラム数は多くても7,8涸で、まあ今後2つとも増やしていく予定

最初は複数DBで運営しようかと考えていたのだけど、ユーザー認証用のtbが既にあるサービスで使うように作ったDBの中に突っ込んじゃった訳ね


摘出してユーザー関連のDB作ってもいいのだけど、こういう作り方ありなのかな〜と思ったので質問させてもらった

機能の拡張性考えたらやっぱりDB分割した方がいい?

123:119
08/02/19 13:02:21
ごめ、やっぱいままでのなし
inner joinで結合したりしてるから無理だ
やっぱ一つのDBで済ますしかないのかな・・・・

124:NAME IS NULL
08/02/19 13:06:35
MySQLってDB開発以外で役に立つのか?

125:NAME IS NULL
08/02/19 17:38:32
は…?

126:NAME IS NULL
08/02/19 21:30:21
というか、他の何に使おうとしてんの? w

127:NAME IS NULL
08/02/19 23:05:34
MyISAM や InnoDB のデフラグってしてる? 定期的にすべきもの?

128:NAME IS NULL
08/02/20 00:50:39
>>127
ものすごい時間かかるよね

129:NAME IS NULL
08/02/20 00:51:18
MySQLでlogという変数がありますが、これをONにするにはどうすればよいのでしょう?

mysql> show variables like 'log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log | OFF |
+---------------+-------+
1 row in set (0.00 sec)

MySQLのバージョンは、5.0を使っております。


130:NAME IS NULL
08/02/20 07:39:29
>>129
my.cnf に次のように書いて mysqld を再起動。

[mysqld]
log = filename


131:NAME IS NULL
08/02/20 11:07:44 u/qQnTAY
ストアドファンクション使用するときに
テーブルロックがかかってしまう問題は
5.1では解決された(る)のでしょうか?

132:NAME IS NULL
08/02/20 11:24:41
>>127
デフラグってどうやってやるんだっけ?
一度ダンプして入れなおすしかないって
聞いたことあんだけどアレ嘘?

133:NAME IS NULL
08/02/20 14:37:10 t1FXjQC1
素朴な疑問ですが、トランザクション・コミットを使用するには
InnoDBにしなければいけない、MyISAMだと使用出来ないと
マニュアルに書いています。

しかし、速度の面からすべてのテーブルをMyISAMにしているのですが、
InnoDBにする利点ってトランザクション・コミット以外にあるのでしょうか?

134:NAME IS NULL
08/02/20 19:17:37
書き込んでる途中に読める

135:NAME IS NULL
08/02/20 20:20:46 Sgz5aacp
MySQLの文字セットをEUCにするのにどうすれば良いのでしょうか?
本やらネットで調べて

/etc/my.cnf に

[mysqld]
default-character-set=ujis
[client]
default-character-set=ujis
[mysql]
default-character-set=ujis
[mysqldump]
default-character-set=ujis

と書き加えてみたのですが、何か上手くいってない雰囲気なのですが。

136:NAME IS NULL
08/02/20 20:47:07
>>135

うちは

cat /etc/my.cnf
[mysql]
default-character-set=ujis

[mysqld]
default-character-set=ujis

で上手くいってますが。

137:NAME IS NULL
08/02/20 21:17:18 o//3cEXb
同じデータ構造を持つテーブル群のデータベースを
一個のデータベースにまとめたいのですが、
mysqldumpでダンプしてからリカバリーしようとすると、
新しいものに上書きされてしまって、一つにまとめることができません。

なにか良い方法はないでしょうか?
宜しくお願いします。
mysqldumpがテーブル毎にダンプできればいいのですが・・・

138:NAME IS NULL
08/02/20 22:12:56
>>137
MERGEテーブルなんてどうだい?
URLリンク(dev.mysql.com)

139:NAME IS NULL
08/02/21 00:31:24
>>132
OPTIMIZE TABLE という命令がある。

140:NAME IS NULL
08/02/21 00:33:12
>>137
テーブル毎にダンプできるよ。
というか、mysqldump の出力はテキストなんだから好きに加工すればいい

141:NAME IS NULL
08/02/21 08:58:10
/etc/my.cnfで以下のようなdataのディレクトリを設定したのに、
なぜか、/var/db/mysql/{database名}以下にデータが出来てしまい
困っております。
[mysqld]
datadir = /home/xxxx/db

データのディレクトリを変えられるところって他にありましたでしょうか?
ちなみに、環境はFreeBSD6.3R+MySQL5.2です。

どうかお助け下さい

142:NAME IS NULL
08/02/21 13:24:45
>141
その /home/xxxx/・・・
ってのは、ユーザーのホームdirっぽいんが、ユーザー:mysqlが、読み書き出来るパーミッションがあるのかね?

143:NAME IS NULL
08/02/21 13:30:57 AwIQMyrc
むしろ mysqld をそのユーザの権限で動かす!

144:NAME IS NULL
08/02/22 15:51:51
>102
遅くなりましたが、ありがとうございました。

145:NAME IS NULL
08/02/22 21:59:19 W58pTgXp
質問させてください。

c1 c2

001 abc
001 hyu
002 ded
002 iopsa
001 yui

こんな感じにテーブルがあるとします。

これを一度の処理でこんな感じに取り出したいです。

001 abc
001 hyu
001 yui
002 ded
002 iopsa

distinct を使ったりしてみたのですがどうにも上手くいかず…
ご教授お願いします。

146:NAME IS NULL
08/02/22 23:41:31
>>145
意味わからん
select c1, c2 from TBL order by c1,c2;
じゃねーの?

147:NAME IS NULL
08/02/22 23:55:03
mysqlをwindowsXP で勉強しているのですが、
INSERT INTO recipe (aaa,bbb) VALUES('日本語',1);
がエラー1366で実行できません。
設定はutf8です。
INSERT INTO recipe (aaa,bbb) VALUES('abc',1);
であれば、実行できます。

もしかして、utf8に設定していると、コマンドから直接入力が無理なのですか?


148:NAME IS NULL
08/02/23 00:12:14
>>147
cp9332とかが良いってばっちゃが言ってた

149:NAME IS NULL
08/02/23 00:46:54
>>148

cp932

150:NAME IS NULL
08/02/23 10:35:49 plV93xd4
SQLの実行時間を図るのにタイムウォッチを使っているのですが、
MySQLで便利なSQLの実行時間がわかる方法ってないでしょうか?


151:NAME IS NULL
08/02/23 15:48:17 M9EfVzmK
mysql4.1

select
a + b
from


こんな感じの場合、a,bどちらかがnullだと結果全部nullになるんですが、
nullは0とて計算したい場合、どのようにすればよいんでしょうか?
m(_ _)m

152:NAME IS NULL
08/02/23 16:02:37 qXPAWXxv
innoDBを使うとSELECT COUNT(*)の処理がMyISAMと比べて桁違いに遅いと思いますが、
COUNT処理を高速化するために、何か方法はないでしょうか?

前にどっかのサイトで、innoDBでのCOUNT処理を速くするテクニックが書かれていたと思うのですが、
どこだか見つけることができませんでした。

宜しくお願いします。

153:NAME IS NULL
08/02/23 16:39:57
MySQL5.1から行レベルレプリケーションというものが採用されたということなのですが、
行レベルレプリケーションとは具体的にはどういうものでしょうか?


154:NAME IS NULL
08/02/23 16:45:15
>>152
innodbのcount(*)検索が遅いのは、クラスタインデックスという仕組みのためらしいです。
これを怪傑する方法としては、force keyを使って、
主キーインデックス以外のカラム(もちろんindexはらないとだめ)を
指定するのが常套手段だったと思います。

これの方法だと、1レコードのサイズが大きいほど劇的に性能あがりますね。


155:>>154
08/02/23 16:47:39
訂正。
force keyじゃなく、force indexだった。
select count(*) from test_table force index(col);


156:NAME IS NULL
08/02/23 16:52:23
>>151
そういうときは、caseだ。ばか。

157:NAME IS NULL
08/02/23 17:18:48
>>151
select ifnull(a,0)+ifnull(b,0) ...

158:NAME IS NULL
08/02/23 17:32:11
>>153
今まではクエリを転送してスレーブ側で実行していたが、変更されたレコードデータその物を転送するようになった。

159:NAME IS NULL
08/02/23 23:01:13 rFdPd3m0
すみません。ビューを作成時のSQL文にバグがあったので、作成時のSQL文を確認したいのですが、
どのようなコマンドを打てばいいのでしょうか。

160:160
08/02/23 23:20:53
事故解決しました。
HDDが飛んでしまったようです。

161:NAME IS NULL
08/02/24 11:39:20
>>115
Handler_read_rnd_nextはテーブルのフルスキャンで何行読んだかを
示しているので、log_slow_queriesに加えてlog_queries_not_using_indexesを
ONにするとどのクエリがやらかしてるのか分かると思う。

>>159
show create view XXX



162:NAME IS NULL
08/02/24 12:01:12
あるCMSをインスコしたときテーブルをいっぱい作成されました。

そのテーブルとテーブル内のフィールドのCollationの値を
すべて変更したいんですが、どうやるのが一番かっこいいんでしょうか?

おねがいします。phpMyAdminは使えます。

163:NAME IS NULL
08/02/24 14:30:31
>>162
DROP DATABASE "DB名";
これが一番最強でクール。

164:NAME IS NULL
08/02/24 14:46:35
>>163
すでにデータが少し入ってるので消したくないんです。

165:NAME IS NULL
08/02/24 15:13:59
MySQLクライアントで10万件のレコードをselectしたとき、最後に
100000 rows in set (1.26 sec)
と表示されます。
1.26secかかったことになっているのですが、実際には25秒かかっています。(

実際の実行時間を表示するにはどうすればよいのでしょうか?


166:NAME IS NULL
08/02/24 16:05:37
25秒ってのは表示とかよけいな処理を含んでるんじゃないの?

167:NAME IS NULL
08/02/24 16:09:06
mysqlってテーブル単位でアクセス権設定できますか?
hogeデータベースのfugaテーブルのみにアクセス可能なユーザを
設定したいのです。

168:NAME IS NULL
08/02/24 16:13:12
10万件のレコードを1秒かそこらで取得できるわけないでしょw
釣りですか?

169:NAME IS NULL
08/02/24 16:47:56 PjrHaGxS
ディスクのIOにかかる部分はシステムコール内で
消費されているからなぁ.その分は1.26秒には
入っていないでしょ.

170:NAME IS NULL
08/02/24 18:22:21
あんまり正確じゃないけど

select count(*) from
(
計りたいSQL
);

というのをよくやる

171:名無しさん
08/02/25 00:10:58 9FzPKS4K
MYSQL導入するのに丸一日かかった
頑張って勉強するお

172:NAME IS NULL
08/02/25 00:24:21
>>171
administratorとQueryBrowserいれとけよ、便利だから

173:NAME IS NULL
08/02/25 00:30:39
>>165
1.26secというのはクエリをサーバーに投げてから結果が返ってくるまでの時間。
25秒は表示にかかった時間も計っているのでは?

174:NAME IS NULL
08/02/25 00:31:59
>>162
alter table xxxx convert to charset utf8
とか?

175:NAME IS NULL
08/02/25 00:34:07
>>170
表示をころすわけね

176:NAME IS NULL
08/02/25 01:53:59 z+rzzFbc
URLリンク(dev.mysql.com)
↑で
「ストアド ルーチン内 (ステートメントをストリングとして動的に構築し、実行する場 ) で動的 SQL を使うことはできない。」
という記述を見つけたんだけど、ストアド内でSQL文字列を構築して実行っていうのができないってことですか?

177:NAME IS NULL
08/02/25 02:13:10 z+rzzFbc
set @vals = "'a','b','c'";
select * from tbl where fld in (@vals);

@valsが動的に変わる場合、↑のようなことをやる良い方法はないでしょうか?

178:phpMyAdminの使いかた
08/02/25 03:07:09 Zgifsms/
phpMyAdminについて質問があります。

現在、次の環境でphpMyAdminをインストールしようとしいるのですが最後の"pma"
ユーザに対するパスワードの設定がうまくいきません。
その為、動作確認の為に次のURLにアクセスをしたところトップページ
は表示されるのですが、幾らパスワードを入力しても弾かれてしまいます。(エラー発生)

URLリンク(localhost)
【エラーメッセージ】
  エラー #1045 - Access denied for user 'pma'@'localhost'
  (using password: YES)
【環境】
  ・Linux(CentOS5)・MySQL5・PHP5
  ・(phpMyAdmin-2.11.4-all-languages-utf-8-only
   (これをインストールする予定)
【phpMyAdminの設定ファイル】
  # vi config.inc.php
  17 $cfg['blowfish_secret'] = 'tekitounamoziwoireta';
  
  /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
  37 $cfg['Servers'][$i]['controluser'] = 'pma';
  38 $cfg['Servers'][$i]['controlpass'] = 'pass';

どうすればphpMyAdminを使える様になるのでしょうか?



179:phpMyAdminの使いかた
08/02/25 03:20:06 Zgifsms/
補足です。

【参考サイト】
  URLリンク(www.okku.jp)(Linux)CentOS+4.1%A4%C7phpMyAdmin%A4%F2%BB%C8%A4%A6
【エラーが発生するコマンド】
  set password for pma@localhost=password('pass');
【エラーメッセージ】
  ERROR 1133 (42000): Can't find any matching row in the user table

どなたか詳しい方お願い致します。

180:>>165
08/02/25 10:42:16
みなさん、ありがとうございます。
みなさんは、性能実測行うときにどのような方法でやられているのでしょうか?
私は、時計使ってやっているのですが、、


181:NAME IS NULL
08/02/25 11:28:26
>>179
MySQLにpma@localhostが登録されてないんじゃね?

182:NAME IS NULL
08/02/25 17:10:30 pyl/7W05
6万行のテーブルにプライマリーキーで検索を掛けると、
300回に1回程度、実行速度が5秒くらいになることがあります。
アクセスが多い(平均35クエリー/秒)ので、それが原因かもしれませんが、
他にひっかかりそうなボトルネックになるような箇所は考えられませんね。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5365日前に更新/244 KB
担当:undef