2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

MySQL 総合 Part12

1 :だよもん!!!:2007/09/23(日) 10:57:29 ID:RN+MewUh
快速 RDBMS、MySQL の総合スレです。
前スレ[MySQL 総合 Part11] http://pc11.2ch.net/test/read.cgi/db/1178154390/
[関連スレと過去ログ]
http://find.2ch.net/index.php?STR=MySQL
http://makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on

[MySQL Developer Zone] http://dev.mysql.com/
[MySQL 日本語リファレンスマニュアル] http://dev.mysql.com/doc/mysql/ja/
[MySQL Internals Manual] http://dev.mysql.com/doc/internals/en/

[MyNA] http://www.mysql.gr.jp/
[MLja] http://lists.mysql.com/mysql-ja

ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
MyNAでの「心得の条」
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0

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



2 :NAME IS NULL:2007/09/23(日) 10:58:56 ID:???
【関連ツール及びユーティリティ】

[phpMyAdmin] http://www.phpmyadmin.net/
[phpMyBackupPro] http://www.phpmybackuppro.net/
[MySQLCC] http://www.mysql.com/products/mysqlcc/
[MySQL-Front] http://www.mysqlfront.de/
[mytop] http://jeremy.zawodny.com/mysql/mytop/
[Common SQL Environment] http://www.hi-ho.ne.jp/tsumiki/cse_1.html

MySQL ABでの各種GUIツールはMySQL GUI Toolsとして統合されています
(WorkbenchはGUI Toolsから独立しました。)
http://dev.mysql.com/downloads/gui-tools/5.0.html
・MySQL Administrator
・MySQL Query Browser
・MySQL Migration Toolkit

http://dev.mysql.com/downloads/gui-tools/5.0.html#Workbench
・MySQL Workbench

【関連書籍】

[MySQL Books]
http://dev.mysql.com/books/
http://www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-jp&fqp=keywords%01MySQL
http://www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-us&fqp=keywords%01MySQL

2ch風偉人伝 AA はこちら
http://www.aadayo.com/aa/02_13.html

3 :NAME IS NULL:2007/09/24(月) 21:17:06 ID:pceZ+XvF
連続のUPDATEの際、INSERTのように1文で書くことはできますでしょうか?
以下のように書いてみましたができませんでした。

UPDATE hoge SET title='HOGE1' WHERE seq=1, hoge SET title='hoge2' WHERE seq=2;

4 :NAME IS NULL:2007/09/24(月) 22:06:40 ID:???
更新データを蓄えるための作業用のテーブルを作ってよければ、こんな感じで。

update test1
set col2 = (select test2.col2 from test2 where test1.col1 = test2.col1)
where col1 in (select col1 from test2);

普通はこんなことしないと思うけど…


5 :NAME IS NULL:2007/09/25(火) 03:54:31 ID:QTKb0E3V
>>4さん
レスありがとうございます。
普通は一回一回UPDATEするということでしょうか?
連続で4回ほどUPDATEすることが確実なのでINSERTのように連続でINSERTすることで負荷を軽減したいと思ったのですが・・・

6 :NAME IS NULL:2007/09/25(火) 04:34:44 ID:???
UPDATEはB-TREE索引をたどって該当行をつかむ→書き換える、
って流れだから、もし1つのSQLで複数まとめて書く文法があったとしても
内部動作的はこれを1回ずつ繰り返すしかない。
だから効率的にはならないんだよ。
INSERTは表の末尾に一度に書き込めばいいから効率的にできるけどね。

というわけでUPDATE4回投げましょう。

同じUPDATE文でパラメータが違うだけなら
PreparedStatement(JDBCの場合)をつかってSQLの解析コストを減らしましょう。

あとは、4回というのが確定ならそのための専用のストアドプロシージャを
書けばクライアント⇔サーバ間の通信量とかは減らせるね。
(ストアドの中では結局UPDATEを4回やるわけだけど)


7 :NAME IS NULL:2007/09/25(火) 13:13:39 ID:I2co02Wi
MySQL4.1でsortの基準をExcelと同じようにする方法はありますでしょうか?

以下のような場合でselect時にsortすると
---------------
insert into test(str) values('5'),('a'),('ア'),('イ'),('あ'),('い');
MySQLでは あ->い->ア->イ->5->a
Excelでは 5->a->ア->あ->イ->い
---------------

になります。MySQLでExcelのようなsort方法は可能でしょうか?


8 :NAME IS NULL:2007/09/26(水) 00:29:32 ID:???
おまえら、まだ前スレが残っていますよ。

9 :NAME IS NULL:2007/09/26(水) 08:02:13 ID:???
ほっとけば落ちるから問題なし

10 :NAME IS NULL:2007/09/28(金) 04:44:53 ID:e5bj6BJY
あげ

11 :NAME IS NULL:2007/09/30(日) 22:18:21 ID:kM0xx8Ko
こんにちわ表をCRETE TABLeでつくってるのですがレコードの名前と型の名前のかきかたと 型の数字だけ表示するやり方がわかりません ちなみに名前はCO CO COUNTRY_NAMEで型がREGION_IDです よろしくおねがいします

ちなみに表の名前はcountriesで 
表をだすときは SELECT * FROM COUNTRIES: です教えてください

12 :NAME IS NULL:2007/10/01(月) 01:08:52 ID:k3mU4g8h
質問させて下さい。
以下のようなテーブルがあります。(他の情報は省略してます。)
tableAにidを4つまで登録することができます。1つのみ登録することもあります。
tableBにidの名称を持っています。

tableA
| id1 | id2 | id3 | id4 |
+-----+-----+-----+-----+
| 001 | 002 | 003 | 005 |
| 002 |   |   |   |

tableB
| id | id_name |
+-----+---------+
| 001 | name1 |
| 002 | name2 |
| 003 | name3 |
| 004 | name4 |
| 005 | name5 |
| 006 | name6 |


この時、↓のような結果を求めるsqlを教えてください。

| id1 | id_name1 | id2 | id_name2 | id3 | id_name3 | id4 | id_name4 |
+-----+----------+-----+----------+-----+----------+-----+----------+
| 001 | name1 | 002 | name2 | 003 | name3 | 005 | name5 |
| 002 | name2 |   |      |   |     |   |     |


よろしくお願いします。

13 :NAME IS NULL:2007/10/01(月) 01:37:19 ID:???
select
 A.id1, B1.id_name,
 A.id2, B2.id_name,
 A.id3, B3.id_name,
 A.id4, B4.id_name
from
 tableA A,
 tableB B1,
 tableB B2,
 tableB B3,
 tableB B4
where
 A.id1 = B1.id
 and A.id2 = B2.id
 and A.id3 = B3.id
 and A.id4 = B4.id
;

わりとFAQ?

14 :NAME IS NULL:2007/10/01(月) 07:09:32 ID:???
TableAの設計が間違ってると思うのは漏れだけ?

15 :NAME IS NULL:2007/10/01(月) 09:30:42 ID:???
>>14
おばあちゃんが言っていた
なんでも正規化すればいいわけじゃない ってな

16 :NAME IS NULL:2007/10/01(月) 10:48:20 ID:???
以下のようなテーブルがあります。(他の情報は省略してます。)

17 :NAME IS NULL:2007/10/01(月) 20:14:38 ID:???
馬鹿には見えないテーブルか

18 :NAME IS NULL:2007/10/01(月) 21:59:42 ID:???
>>17
裏2chじゃないの?

19 :NAME IS NULL:2007/10/03(水) 14:50:47 ID:L9QuLInZ
ORDER BYで近い数値順に並べ替えとかできませんかね?

2500に近い順

var
1945
4278
5362
4896
3542
1457
1234

 ↓

var
1945
1457
3542
1234
4278
4896
5362




20 :NAME IS NULL:2007/10/03(水) 16:09:54 ID:???
>18
鮫島に関する投稿は消されるんだよ素人

21 :NAME IS NULL:2007/10/03(水) 19:06:01 ID:???
select hoge from fuga order by abs(hoge - 2000)

22 :NAME IS NULL:2007/10/03(水) 19:28:21 ID:???
掲示板に3分以内に投稿されたレスの数を取得するSQL文を書こうと思っています。

http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html を見たのですが、比較部分をどうすれば良いのかが分かりません。

SELECT COUNT(*) FROM `res_t` WHERE dateTime_c >= SUBTIME(NOW(), '00:03:00');

みたいに書いたら一応エラーにはならないのですが、正しく比較できているか (日時が数値変換されて変に比較されていないか) が不安でしょうがありません。

上のSQL文で正しいかどうか、間違っていればどこを修正すれば良いのかを、ご教示お願いします。

23 :NAME IS NULL:2007/10/04(木) 17:32:35 ID:Iv269TDK
質問します
会員管理システムで、ログイン後ユーザ情報編集画面に移るようにしたいんですが、
ログイン用のIDとPassは名前や電話番号などのユーザ情報テーブルの
中に入れてもいいんでしょうか?
それとも、ログイン確認用の専用のテーブルを持たせるべきでしょうか
みなさんはどのようにしていますか?
また、各情報の編集のために複数の編集ページを行き来するたびに、
セッションでID/Passを随時確認した方がいいんでしょうか?
だいたいこんな感じでやっているというのを教えてください。 よろしくお願いします

--------------
webプログラム板で質問したんですが、板違いといわれてこちらで再質問させてもらいました

24 :NAME IS NULL:2007/10/04(木) 21:22:46 ID:???
俺にはweb板が正しくここが板違いにみえるが。。。

25 :NAME IS NULL:2007/10/04(木) 23:53:10 ID:???
>>23
MySQLなんて大げさなやつじゃなくて
PHPのAPIのSQLite使ったセッション管理使えばいいんじゃね?

PHPスレかSQLiteスレに行くといいと思うよ。

26 :NAME IS NULL:2007/10/04(木) 23:58:36 ID:???
PHPスレで拒否られてるんだよ、>>23は。
PHPスレでDBの作りの質問をし、MySQLスレでWEBセッション管理の質問
も追加してくれば、どちらでも違和感感じる罠。
PHPとMySQL固有の話じゃ無いんだから、もっと一般的な話題のスレで
聞くべき。
で、要求されるセキュリティのレベルが分からない以上、お好きなように
としか言いようが無い。


27 :NAME IS NULL:2007/10/05(金) 00:00:10 ID:???
>>26
一度や二度のアタックであきらめるような恋なら最初からするな。

28 :NAME IS NULL:2007/10/05(金) 00:04:46 ID:???
はあ?

29 :NAME IS NULL:2007/10/05(金) 00:39:42 ID:???
規模にもよるけど悩むぐらいなら作れって
あ、ねぇきいてきいていますっごいいっぱいうんこでてるよ
すっごいいっぱい

   うんこが


  でてるんだよ
   俺の体内しか知らなかったうんこたちが
 噴流となって体外へと

    このタイムスタンプが俺とうんこたちとの生きた証、メモリー

トイレからカキコ

30 :NAME IS NULL:2007/10/05(金) 11:27:29 ID:+u0dyj/F
すみませんが質問させてください。

MySQL5.0

LIKE演算において[0-9]や[A-C]などの構文ってサポートされていないのでしょうか?
自分で調べたらAccessではできるみたいなのですが・・・。
できないのであれば、同じことを実現する方法ってありますか?

具体的には・・・
<<data>>
CF47
AD27
EZ12

から先頭のアルファベットがA-C、二番目のアルファベットがC-Gを
SELECTしたいのですが、俺がアホなのか何回やっても構文エラーが
帰ってきます・・・。

31 :NAME IS NULL:2007/10/05(金) 11:35:42 ID:???
like 'AC%' or like 'AD%' or like 'AE%' or .... or like 'AG%' or
like 'BC%' or ...
like 'CC%' or ...


32 :30:2007/10/05(金) 11:43:36 ID:+u0dyj/F
>31
ありがとうございます。
まじっすか!?
力技しかないのか〜。

33 :NAME IS NULL:2007/10/05(金) 13:35:11 ID:???
where data between 'A' and 'C'
and substr(data, 2, 1) between 'C' and 'G'


34 :30:2007/10/05(金) 14:10:13 ID:+u0dyj/F
おぅおぅ!感動っす♪
ありがとうございました。

35 :NAME IS NULL:2007/10/05(金) 21:27:23 ID:ywDCVcNs
>>30
正規表現使えよ・・・

36 :NAME IS NULL:2007/10/05(金) 22:41:19 ID:???
>>30
RLIKE でおk

37 :NAME IS NULL:2007/10/06(土) 05:59:29 ID:???
http://dev.mysql.com/doc/refman/5.1/ja/string-comparison-functions.html

38 :NAME IS NULL:2007/10/06(土) 09:02:35 ID:ALRD9ApN
"GROUP BY column"となっているときcolumnがNULLの時は纏めたくないのですが、
どのようにしたら良いでしょうか?

39 :38:2007/10/06(土) 09:04:18 ID:???
すみません、Ver 3.23です。

40 :NAME IS NULL:2007/10/06(土) 11:57:40 ID:???
WHERE column is not null GROUP BY column


41 :38:2007/10/06(土) 12:06:44 ID:???
>>40
ありがとうございます。
ですが、それだとcolumnがNULLのものは、纏める纏めない関係無しに
全て表示されなくなってしまうのですが。。

42 :NAME IS NULL:2007/10/06(土) 12:11:34 ID:???
mysqldumpでDBのフルバックアップを二回取ったんですが、
一回目取った分と二回目に取った分の差分を埋めることってできませんかね?

43 :NAME IS NULL:2007/10/06(土) 12:14:04 ID:???
これでどう

select ... from ... where column is not null group by column
union all
select ... from ... where column is null;


44 :38:2007/10/06(土) 12:36:43 ID:???
>>43
ありがとうございます。
うーん、それしかないですかね。。二つクエリ発行するのは負荷の都合から避けたいのですが。

45 :NAME IS NULL:2007/10/06(土) 15:30:16 ID:???
>>24-26
ごめんよ 自分でどうにかしてみるよ

46 :NAME IS NULL:2007/10/06(土) 15:37:05 ID:???
じゃあ
NULLはまとめない⇒NULLにダミー値を差し込む
という方針で

select col2, col3 from test;
+------+------+
| col2 | col3 |
+------+------+
| 1  | 1  |
| 1  | 2  |
| 2  | 1  |
| 2  | 2  |
| NULL | 1  |
| NULL | 2  |
+------+------+

select max(col2) into @r from test;
select case
    when col2 is null then @r := @r + 1  
    else col2
    end dummy1,
    count(*)
from test
group by dummy1
;

+--------+----------+
| dummy1 | count(*) |
+--------+----------+
| 1   |    2 |
| 2   |    2 |
| 4   |    1 |
| 6   |    1 |
+--------+----------+

@rが2ずつ増えるのが謎…

47 :NAME IS NULL:2007/10/06(土) 20:23:41 ID:???
ワロス
3から始まらないのも謎...

48 :NAME IS NULL:2007/10/07(日) 09:03:47 ID:QwQK+lic
A,B,Cというカラムがありまして、
A,Bの項目が重複しているレコードを全て取得したいのですが、どのようなSQLを発行すれば宜しいでしょうか?

A,B,C
"男","東京","新宿"
"男","東京","池袋"
"男","東京","渋谷"
"女","神奈川","横浜"
"女","東京","新宿"

↓↓↓↓↓↓↓↓↓↓↓↓(■"男","東京"が重複しているレコードを取得したいです)

"男","東京","新宿"
"男","東京","池袋"
"男","東京","渋谷"

A項目B項目とも内容が不定なので、WHERE文が作れなくて挫折してしましました。
宜しくお願いします。

49 :NAME IS NULL:2007/10/07(日) 09:12:10 ID:???
group by dummy1
の中でも @r := @r + 1 が評価されてしまっている

select max(col2) into @r from test;
set @s := 0;
select case
   when col2 is null then @r := @r + 1
   else col2
   end dummy1,
   @s := @s + 1,
   count(*)
   from test
   group by dummy1
;

50 :NAME IS NULL:2007/10/07(日) 09:24:17 ID:???
>>48
SELECT a, b, c FROM test WHERE a In (SELECT a FROM test GROUP BY a, b HAVING Count(*) > 1) ORDER BY a, b;


51 :NAME IS NULL:2007/10/07(日) 13:33:39 ID:???
>>50
ありがとうございました。
出来ました!!
色々四苦八苦していたので助かりました。

52 :NAME IS NULL:2007/10/07(日) 15:00:28 ID:???
すみません、テーブルを作っていたら以下のようなエラーが出ました
本の通りしたつもりなんですが、どういう問題なのでしょう?

mysql> create table 'saloon_kihon'(
-> 'sId' int(10) NOT NULL auto_increment,
-> 'loginId' varchar(32)
-> );
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ''salo
on_kihon'(
'sId' int(10) NOT NULL auto_increment,
'loginId' varchar(32)
)' at line 1

53 :NAME IS NULL:2007/10/07(日) 15:10:48 ID:???
>>52
single quoteではなくてback slashだろw

54 :NAME IS NULL:2007/10/07(日) 15:19:31 ID:???
>>53
本当にすみません どこの部分でしょう?
ドシロウトなので、自分なりに慎重にやってるつもりなんですが、、
もう少し詳しくお願いします。

55 :NAME IS NULL:2007/10/07(日) 15:53:06 ID:???
「'」と「`」は違う文字


56 :NAME IS NULL:2007/10/07(日) 15:57:59 ID:???
DBにデータをinsertしまくってるんだけど、

/var/run/mysqld/mysqld-bin.000001
/var/run/mysqld/mysqld-bin.000002
…以降,1GB超えると次の番号へ

というバイナリが異常なペースで肥大化しているんだが、このファイルは何?
ログだとは思うんだけど、サイズ指定とか場所変更する方法はないかな
/varのパーティションサイズがさしてでかくないから困ってる

/etc/mysql/my.cnfにそれらしき設定項目も無い
だれかヘルプ

57 :NAME IS NULL:2007/10/07(日) 16:13:07 ID:???
log-binっていうそれらしき設定項目があるはずなんだが

58 :NAME IS NULL:2007/10/07(日) 16:27:57 ID:???
>>57
確かにあった、これだったのか。
 log-bin
とだけしかなかったら何かわからずスルーしていたんだけど、
 log-bin=/hoge/log
とかすれば場所変更できるみたいだね!
dクス

59 :NAME IS NULL:2007/10/07(日) 17:34:27 ID:???
>>53
back quote な。

60 :NAME IS NULL:2007/10/07(日) 17:35:32 ID:???
http://dev.mysql.com/doc/refman/5.1/en/log-file-maintenance.html

61 :NAME IS NULL:2007/10/07(日) 17:41:42 ID:???
>>60
ありがとう。
あとは有効期限(expire_logs_days じゃ無理かな?)を指定できればいいんだけど、
検索すべきキーワードもわかったから、あとはなんとか自分で調べるよ。

62 :NAME IS NULL:2007/10/07(日) 21:56:39 ID:???
hogeフィールドのデータが
「yama,kawa,tani」のデータに対して、
yama か kawa か tani であれば一致するようにしたい場合、
WHERE hoge REGEXP (yama|kawa|tani)
でいけるかと思いますが、
他にもっとスマートな関数や演算子とかないでしょうか。

説明へたくそでスマソ。伝わるかな(汗




63 :NAME IS NULL:2007/10/07(日) 23:41:29 ID:???
hoge in ('yama','kawa','tani')

これ?

64 :NAME IS NULL:2007/10/08(月) 12:11:37 ID:???
MySQL Command Line Client で何か select 文を発行すると

mysql> select count(*) from hogehoge;
+----------+
| count(*)   |
+----------+
| 999999    |
+----------+

のように - や | や + で整形して表示されますが、これらを自由に設定するには
どうしたらいいですか? ORACLE でいう SET COLSEP=hemohemo という感じです。

65 :NAME IS NULL:2007/10/08(月) 12:22:48 ID:???
>>64
できない

66 :64:2007/10/08(月) 12:30:42 ID:???
>>65
ガ━━(゚Д゚;)━━━ン!!!!!


ありがとうございましたorz

67 :NAME IS NULL:2007/10/08(月) 13:47:43 ID:???
現在InnoDBのサイズが60G超えてるんだけど
mysqldを起動するだけで激しいI/Oが発生する
止めれば発生しない
ディスク使用量に変化は無く、ただCPU3〜4%を食いながらメモリ量が上下しているだけ

8時間たった今もかわらずHDDが絶えずカリカリ
mysqldは何してるの?

68 :67:2007/10/08(月) 16:43:34 ID:???
↑の質問はスルーでお願い。
そもそもプログラムミスでコミットの粒度が大きすぎたのが原因かも。
直してもなるようだったら、また質問させてもらうよ


69 :NAME IS NULL:2007/10/08(月) 18:18:51 ID:???
InnoDBは大量にINSERTしたデータをいったんInsert Bufferというところに
ためて、あとから非同期にテーブルに差し込む。
この処理のことをInsert BufferをMergeするって言う。

だからトランザクションをいっぱい流すと、
その後mysqld再起動してなんも触ってないのにカリカリいうことはある。

show engine innodb statusでINSERT BUFFER AND ADAPTIVE HASH INDEX
のセクションを眺めてなんだか忙しそうなら当たり。

innodb_fast_shutdown = 0にするとmysqldは停止時にInsert Buffer Mergeを
完了させる。でもマニュアルには「これらの操作には数分間、または極端な
場合には数時間かかる事があります。」と書いてある。

70 :NAME IS NULL:2007/10/08(月) 19:19:13 ID:???
パスワード無しでテーブルの有無を確認するだけのユーザーを作りたいのですが、
どのような権限を与えればいいのでしょうか?

71 :NAME IS NULL:2007/10/09(火) 00:26:59 ID:???
>>55
ありがとうございました
フィールド名って「'」でくくらなくてもOKなんですね
なんで自分の本はくくってるんだろう、、  ともかくありがとう

72 :NAME IS NULL:2007/10/09(火) 01:26:00 ID:???
>>71
いやフィールド名で使うのは「'」ではなく「`」。

73 :NAME IS NULL:2007/10/09(火) 06:24:57 ID:???
>>72
おお、出来ました
というか、パソコン買って8年目にして初めて「`」の存在に気づきましたw
ありがとうございました!

74 :NAME IS NULL:2007/10/09(火) 09:09:42 ID:???
数字を含むカラムがあって
その中からある範囲の数字を含むレコードが
存在するかしないかだけを調べるにはどうすればよいですか


75 :NAME IS NULL:2007/10/09(火) 09:19:05 ID:???
>>74
簡単にサンプルを示してくれ

76 :NAME IS NULL:2007/10/09(火) 09:19:10 ID:NjjCqEdh
SELCT COUNT(*) TOTAL FROM SAMPLE WHERE COLUMN > 0 AND COLUMN < 100;

77 :NAME IS NULL:2007/10/09(火) 17:35:33 ID:/I5hC7wb
合計で数百万行で1.5GB相当のデータを47分割してテーブルに格納しています。
検索するときに、全てを結合させて検索していますが、
結合させずにひとつのテーブルに全てのデータを格納しているときと、
処理速度は変わらないのでしょうか?
ためしてみようと思ったのですが、1.5GBほどのデータ量のため、とても時間がかかってしまいます。

78 :NAME IS NULL:2007/10/09(火) 18:12:16 ID:???
>>77
全てを結合ってどういうこと?

79 :NAME IS NULL:2007/10/09(火) 18:22:46 ID:???
>全てを結合ってどういうこと?
つまりSEXってこと。

80 :NAME IS NULL:2007/10/09(火) 19:47:45 ID:v9b6pzkg
なんでスケールを小さくして試してみようとは思わないのかしら?

81 :NAME IS NULL:2007/10/09(火) 20:05:59 ID:???
1テーブルに数百万行の状態で検索した場合の速度が知りたいからじゃね?

82 :59:2007/10/09(火) 21:55:34 ID:???
>>73
なんで俺のヒントはスルーなんだよ!!


83 :NAME IS NULL:2007/10/09(火) 21:56:09 ID:???
>>74
RANGE か BETWEEN てなかったっけ?

84 :NAME IS NULL:2007/10/10(水) 00:47:20 ID:???
CREATE TABLE `users` (
`username` char(30) NOT NULL default '',
`userpasswd` char(20) NOT NULL default '',
);

INSERT INTO `users` (`username`, `userpasswd`) VALUES
('wildcard', '%');

上記のようなテーブル・データを作成して
下記のようにSELECTしてみましたが、username wildcard は
セレクトされませんでした。
どこがだめでしょうか?

SELECT *
FROM `users`
WHERE `userpasswd` = 'abc';



85 :NAME IS NULL:2007/10/10(水) 02:45:47 ID:???
フィールドの値をベースに正規表現で比較するのって可能でしょうか?

SELECT field
FROM `table`
WHERE 'keyword' REGEXP field;
で一応うまく検索かけれるんだけど、これって正式にサポートされてるんでしょうか?

また、
WHERE 'keyword' REGEXP ^field$;
みたいに記述したい場合はどうすればいいんでしょうか。
ちなみにこれでは文法エラーがでます。


86 :NAME IS NULL:2007/10/10(水) 03:27:08 ID:???
>>84
そりゃ username = 'wildcard' のレコードの userpasswd カラムの値は
'abc' じゃないからだろ

87 :NAME IS NULL:2007/10/10(水) 08:40:52 ID:???
>>85
1番目 REGEXPの演算子の問題だから、フィールド値を左右どっちに使っても問題ない。

2番目 WHERE 'keyword' REGEXP CONCAT("^",field,"$") でいけるかな。

1 にしても 2 にしても遅そうだけど。

88 :NAME IS NULL:2007/10/10(水) 12:10:03 ID:???
データベースに保存されているデータを
丸々そのまま別のところで使用したい場合、
どうすればいいのかな?
容量は3GB近くなんだが・・・

89 :NAME IS NULL:2007/10/10(水) 13:28:55 ID:???
DB止めれるならtar玉で圧縮したら?

90 :NAME IS NULL:2007/10/10(水) 13:35:08 ID:???
>>89
鯖にもよるんですね
さくらのプロ借りてますが、/db/ってとこに入れればいいのかな・・・?

91 :84:2007/10/10(水) 13:36:35 ID:???
どんな条件でもヒットするような
フィールド値って存在しないんでしょうか?
%にすれば何でもヒットしてくれるかな、というあふぉな考えをしてました。


92 :84:2007/10/10(水) 13:39:47 ID:???
そういえば、
mysqlデータベースのuserテーブルって、Hostフィールドが%で機能してますよね。

あれは、MySQLのユーザ処理部分がそういう風に作られてるだけで
一般的な使用方法は無理なのでしょうか。

93 :84:2007/10/10(水) 13:40:50 ID:???
>>90
さくらならphpmyadminでエクスポートすればよいのでは。

94 :NAME IS NULL:2007/10/10(水) 13:41:37 ID:???
>>93
インポートかな・・・?
流石に3GBもあるのを一度にインポートするのは大変な気も・・・
たとえ分割してても

95 :NAME IS NULL:2007/10/10(水) 13:58:24 ID:???
>>91
存在しない 意味がないから

>>92
このカラムを読み込んだプログラムが
% の場合は任意のホストとして扱う、という処理なんだろう   きっと、、、

96 :NAME IS NULL:2007/10/10(水) 15:04:23 ID:???
>>90 さん、レンタルサーバーを借りているなら、仕様書なりありませんか?
また、サポートなどで聞くことはできませんか?

Linux(など)の場合、サービスディレクトリはサーバーの設計を行った人にしかわからない
かと思います。

また、DBが共有サービスであれば、DBを止めることもできないかと思われます。
サーバーへログイン可能であれば、
http://www.nilab.info/zurazure2/000659.html

こういったものを参考にできませんでしょうか?


97 :NAME IS NULL:2007/10/10(水) 15:16:04 ID:???
>>91
確かにそういう特殊な値はほしいときがあるね

98 :NAME IS NULL:2007/10/10(水) 15:43:32 ID:???
>>84
SELECT * FROM `users` WHERE 'abc' like `userpasswd`;
で絞り込んだ後、フロントエンドで処理するんじゃだめ?

99 :NAME IS NULL:2007/10/10(水) 15:44:38 ID:g44V9bOq
>>98
もしくは素直にNULLを入れといて
SELECT * FROM `users` WHERE `userpasswd` = 'abc' or `userpasswd` is null;
する方が素直かな。

100 :NAME IS NULL:2007/10/10(水) 16:39:07 ID:???
>>96 は?何か?

>>90
show variables like "datadir";
でDBのデータディレクトリを特定
FLUSH TABLES WITH READ LOCK;
でDBのカキコ禁止
データディレクトリを丸ごと tar zcvf
終わったらカキコ許可
UNLOCK TABLES;
でsftpとか lftp で tarしたDBファイルを引越し先にput
後はわかるだろう。


101 :NAME IS NULL:2007/10/10(水) 19:47:56 ID:???
もしかしてさんざん既出かと思うのですが、ざっとググった限りでは解決しなかったので
質問させてください。

今サーバで動いているMySQLはrpmでいれた5.0.22なのですが、コンパイルオプションとして
dont_use_default_fieldsを指定した動作になっているようです。開発環境のWindows版とで
insert時の挙動が異なり、大変不便な思いをしています。

これを解決するにはソースからコンパイルするほかないんでしょうか?
なお現在手に入る最新のrpmは以前のstandardではなくcommunity版となっており、
コンフリクトのためインストールできませんでした。

102 :NAME IS NULL:2007/10/10(水) 21:25:21 ID:???
そのとおり

103 :NAME IS NULL:2007/10/10(水) 21:44:38 ID:???
>>96
http://web.arena.ne.jp/suitepro/support/manual/webserver/apache.html

104 :NAME IS NULL:2007/10/10(水) 21:45:24 ID:???
ごめん
こっちだった
http://web.arena.ne.jp/suite2/


105 :NAME IS NULL:2007/10/10(水) 21:51:45 ID:???
http://web.arena.ne.jp/suitepro/service/spec_12.html

106 :NAME IS NULL:2007/10/10(水) 22:05:08 ID:???
mysql> show global status;
で出てくる送信バイト数Bytes_sentの値が、32bit(4GB)で桁あふれして
ゼロに戻っちゃうんですが、仕様ですか?

いまどき、4Gとかで桁あふれされても困るんですが。
何回桁あふれたかperlスクリプトか何かでチェックしてバイト数だすのとか面倒くさす
どうにかなりません?

107 :NAME IS NULL:2007/10/10(水) 22:15:27 ID:???
>>106
いまどき32bit環境かよ!

108 :NAME IS NULL:2007/10/10(水) 22:15:57 ID:???
すまんかった、今すぐOpteron買ってくる!

109 :NAME IS NULL:2007/10/10(水) 22:36:50 ID:???
>>106
ttp://bugs.mysql.com/bug.php?id=28149
5.0.44 及び 5.1.20-beta で修正した、とのこと

110 :NAME IS NULL:2007/10/10(水) 23:07:16 ID:???
アルェー(・3・)うち5.0.45なんだけドー

と思ったら

The Bytes_received and Bytes_sent status variables could hold only
32-bit values (not 64-bit values) on some platforms.

some platformsっすか・・・

111 :NAME IS NULL:2007/10/11(木) 00:46:49 ID:+sOrpx9+
すまんが、データベース内で、文字列の中から2つ以上並んだスペースを1つのスペースに置き換えることって出来ないかなあ?

「あ_い___うえ____お」→「あ_い_うえ_お」
こんな感じで。
一回、スペースで切り分けて、スペースを除去してからスペースを一つつけてつなぎ合わせるしかないのかな???

112 :NAME IS NULL:2007/10/11(木) 00:58:35 ID:???
スペース3個をスペース2個に置換をできるかぎりやる

1個→1個
2個→2個
3個→2個
4個→3個→2個
5個→4個→3個→2個

となって、必ずスペース1個か2個になる。
スペース3個がなくなったら、スペース2個を1個に置換すればおk

113 :NAME IS NULL:2007/10/11(木) 01:10:57 ID:dt5N6A3I
>>112
やっぱりデータベース内では限界なのかなあ???

114 :NAME IS NULL:2007/10/11(木) 01:15:34 ID:???
いや、データベース内で置換できるだろ、replaceで

115 :NAME IS NULL:2007/10/11(木) 01:47:43 ID:D7bY0G8T
datetimeのカラムにインデックス付けて、
年とか、年月とか、年月日で集計したいのですが
like 'year-month%'で検索するとインデックスが使用されません
インデックスが使われるようにするにはどうすればいいですか?

116 :むこうの246:2007/10/11(木) 04:08:30 ID:???
どなたか、こちらの件わかる人おりませんか??
http://pc11.2ch.net/test/read.cgi/db/1081818145/246-247

ちなみに今日は、本家から5.0.45.tar.gzとってきて、同様にmake(prefixのみ別dirで./configure)してみたんですが、
やっぱりmake testで一発目(alias)からFailedでて先に進めません。

昨日と同じく、testとばしてmake installして起動させてみると一応ちゃんと動いている模様。
./mysql-test/mysql-test-runはやっぱり通らないけど、./sql-bench/run-all-testだと(5.0.48、5.0.45とも)止まらずに最後まで行きます。
出力見た限りではどこかでエラーとかにはなってないと思う(前にWin版でsql-benchした時、エラーの時それらしい出力があった)

もともとrpmで入った/etc/my.cnfをrenameしたり、/usr/local/mysql仕様に書き換えたりしたけどtest通らず。

distri達はrpm作った時にどうやってtest通したんだ?
(specのなかにmake testがあるってことは、ちゃんと通ったはずなんですが・・)

117 :NAME IS NULL:2007/10/11(木) 10:55:56 ID:???
>>115
範囲指定する。


118 :NAME IS NULL:2007/10/11(木) 11:53:28 ID:???
文字列の中から2つ以上並んだスペースを1つのスペースに置き換えることって

1個→1個
2個→1個
3個→2個→1個
4個→3個→2個→1個
5個→4個→3個→2個→1個

119 :むこうの246:2007/10/12(金) 04:33:11 ID:???
問題解決しました。どうもすいません。

120 :NAME IS NULL:2007/10/12(金) 07:15:11 ID:???
s/\s+/ /g

121 :NAME IS NULL:2007/10/13(土) 15:35:09 ID:???
>>120
マルチバイトで正規表現ってちゃんと使えるようになったの?
まだ鬼車パッチ当てなきゃだめ?

122 :NAME IS NULL:2007/10/14(日) 00:44:56 ID:???
なってないような気がする。


123 :NAME IS NULL:2007/10/16(火) 17:22:51 ID:19Z+CTul
曖昧検索のやり方を教えてください。

検索用語「手伝う」

「おなかが減りました」
「手が痛いです」
「今日、母親の手伝いをしました」
「仕事を手伝う」

とあると、一番「手伝う」に近いものから出したいのです。
上記の場合だと

「仕事を手伝う」
「今日、母親の手伝いをしました」
「手が痛いです」
「おなかが減りました」

このように出したいのですが、そういった検索方法はありますでしょうか?


124 :NAME IS NULL:2007/10/16(火) 21:41:18 ID:???
DBに曖昧検索機能など無い

125 :NAME IS NULL:2007/10/16(火) 21:44:19 ID:???
つオントロジ

126 :NAME IS NULL:2007/10/16(火) 23:35:24 ID:wl91U+ML
類義語辞書DB作ってFullTextSearch回すとか


127 :NAME IS NULL:2007/10/16(火) 23:41:50 ID:JuRjnLqb
マッチ条件がだんだん短くなるような検索があればいいんだな、多分

128 :NAME IS NULL:2007/10/17(水) 01:17:33 ID:hXE7fedj
「手伝う」でマッチする文章を高いスコアとし、
「手伝」「伝う」でマッチするのはそれより低いスコア、
「手」「伝」「う」でマッチするのはもっと低いスコアとして

さらに出現頻度で合計して総合スコアをだせばいいのでは

どれくらいのスコアにすればいいのかは統計をとって最適値を求めればいいのでは

129 :NAME IS NULL:2007/10/17(水) 01:21:04 ID:???
「てつだう」はスコア低くていいのかな

130 :NAME IS NULL:2007/10/17(水) 03:11:56 ID:???
>>133
ないので自分で作ってください

131 :NAME IS NULL:2007/10/17(水) 16:27:20 ID:???
かなりアクセスのあるデータベース(MySQL)を使用する際、

[構成A]
CPU:Core2Duo
メモリ:8GB
HDD:SATA
台数:4台

で行くのが良いのかそれとも

[構成B]
CPU:Core2Quad
メモリ:8GB
HDD:SAS 15000回転
台数:2台

で行くのが良いのかどちらでしょう。
読み込み中心ならメモリでキャッシュ処理できるから
構成Aのほうが圧倒的に優位な気はしますが。

参考コメントきぼんぬ

132 :NAME IS NULL:2007/10/17(水) 17:35:21 ID:???
データの総量が8GB未満ならB。
ディスクにアクセスしないのでCPU性能が出るから。

データの総容量が8GB以上ならB。
ディスクが速いから。

構成書き間違ってない?

133 :NAME IS NULL:2007/10/17(水) 17:46:22 ID:???
MySQLクラスタって参照のみでもそんなに速度がでないって言うし、それもプロ中のプロが限界まで調整した結果なんだろうし・・・・
相当単純なことしかさせない場合は別として、Bの方が安全かなあ?

134 :NAME IS NULL:2007/10/17(水) 18:49:45 ID:???
会費制の会員システムをphp+mysqlで組もうと思うのですが、
料金部分のテーブル構成に非常に悩んでます。
どこか参考になるところないでしょうか。

ここの決定でほぼ決まるような気がします。

135 :NAME IS NULL:2007/10/17(水) 19:03:22 ID:???
>>134
恐らくデータ型を悩んでいるんだと思いますが、
DECIMAL型で作成すれば、あとは特に問題は生じないと思います。
理由はお分かりだと思いますが、まるめ誤差を防ぐためです。

136 :132:2007/10/17(水) 19:36:19 ID:???
>>133
台数ってHDDの数じゃなくてサーバの台数?
勘違いしてた。前言撤回。
Aでレプリケーション組むのがいいと思う。
更新用が1台、参照用が3台。
MySQLは2コア→4コアの性能向上があまり良くないから。

ストレージエンジンはMyISAMかInnoDBで。
MySQL Clusterは忘れていいよ。あれは特定用途向けの単機能製品。
エンジンの機能実装がしょぼいのでちょっと凝ったSQL投げると性能劣化する。

137 :133:2007/10/17(水) 20:41:11 ID:???
>>136
すまんが俺は131じゃないんだ。
参照のみっていっても、必ずしもレプリケーションで対応できるわけでもないんじゃないかなっていう意味で>>133を捕らえて欲しい。

138 :NAME IS NULL:2007/10/18(木) 18:12:39 ID:k4W9Nk/e
タギングを実装しようと考えているのですがDB構成がどうもしっくりきません。
皆さんならどんな風に実装しますか?

僕が考えたものだと汎用性が皆無です。。。

■案1
CREATE TABLE t_bookmark (
seq INT,
name VARCHAR(128),
tag1 VARCHAR(32),
tag2 VARCHAR(32),
tag3 VARCHAR(32)


■案2
CREATE TABLE t_bookmark (
seq INT,
name VARCHAR(128),

CREATE TABLE t_bookmark_tagging (
bookmark_seq INT, -- t_bookmark.seq
tag VARCHAR(32)


案1だと3つまでと最大数が決まっているが管理が簡単
案2だと汎用性は1以上だが膨大なデータ量になるかも

できればタグ同士をフォルダーのように関連付けたりもしたいのですが皆さんならどんなテーブルにしますか?

139 :NAME IS NULL:2007/10/18(木) 18:15:31 ID:???
少なくとも案2はねえな。

140 :NAME IS NULL:2007/10/18(木) 20:24:54 ID:???
案2にタグテーブルを追加して、
t_bookmark_taggingテーブルのtagをタグテーブルのプライマリキーに置き換える。

141 :NAME IS NULL:2007/10/18(木) 23:11:15 ID:???
>できればタグ同士をフォルダーのように関連付けたりもしたい

って具体的にどういうことがしたいん?


142 :NAME IS NULL:2007/10/19(金) 03:37:41 ID:H+ebEc3A
>>140
ありがとうございます!
汎用性高そうですね
勉強になります!
>>141
簡単にいうとgoogleみたいなことです

143 :NAME IS NULL:2007/10/19(金) 10:45:44 ID:???
>>142
「googleみたいなこと」って全然意味が分からないのですが。
全文検索?

144 :NAME IS NULL:2007/10/19(金) 12:11:34 ID:???
gmailのラベルのことを言ってるのかな

145 :NAME IS NULL:2007/10/19(金) 12:47:16 ID:???
YouTube のタグみたいなのじゃなくて?

146 :NAME IS NULL:2007/10/19(金) 13:08:52 ID:vJ6ps9vK
>>143
キーワード「サル」の類義語として「ゴリラ」、「チンパンジー」などを階層的に保持したいのです。
サルで検索したらゴリラにカテゴライズされるものも表示したいのです。

自分なりに考えてみたのですが、ムズかしい!

147 :NAME IS NULL:2007/10/19(金) 13:46:45 ID:???
そういうのはスマートにやろうとするより、ベタにやったほうがかえってうまくいったりする

148 :NAME IS NULL:2007/10/19(金) 14:21:48 ID:???
>>146
そういうのは >>140 のタグテーブルにツリー構造を作るのがよかんべ。
ただ、ちゃんと考えないとパフォーマンス悪くなりそうだけど。


149 :NAME IS NULL:2007/10/19(金) 18:07:04 ID:???
>>142
まずしっかり正規化してみる。おのずと答えが出るものだ。

150 :NAME IS NULL:2007/10/19(金) 18:09:44 ID:???
google の 関連検索 見たいな事をTAGでやりたいのではないかと。
というか質問しておいて言葉足りな杉。

151 :NAME IS NULL:2007/10/19(金) 18:16:44 ID:???
>>150
そういうことか。てっきりYouTubeのタグみたいなのかと思ったぜ。

152 :NAME IS NULL:2007/10/19(金) 18:32:36 ID:a+9wl6Y6
DBで一部の文字列が検索できなくなりました。
文字コードはUTF-8です。

「和風居酒屋」という文字列に対し、LIKE '%居酒屋%'でヒットしません。
LIKE '%酒屋%' または LIKE '%屋%' などではヒットします。
LIKE '%居%' ではヒットしません。

「居酒屋」に対しては、
LIKE '%居酒屋%' でも LIKE '%居%' でもヒットします。

「和風 居酒屋」と、半角スペースを空けてみても
LIKE '%居酒屋%' でも LIKE '%居%' でもヒットします。

「風居」で何か特殊なことでも起きているのでしょうか?

153 :NAME IS NULL:2007/10/19(金) 18:43:18 ID:a+9wl6Y6
追記です。
型はTEXTです。

154 :NAME IS NULL:2007/10/19(金) 18:53:40 ID:???
揚げ足とりみたいなことを聞いてすまんが、前まではできてたって意味なの?

155 :NAME IS NULL:2007/10/19(金) 18:54:39 ID:a+9wl6Y6
>>154
いえ、今回初めてやりました。
検索できなくなりました。 →検索できません。

に訂正します、すみません。

156 :NAME IS NULL:2007/10/19(金) 19:06:45 ID:a+9wl6Y6
SHOW VARIABLES
で文字コードをチェックしたところ、「ujis」になっていました。

手順的にこんな感じです。

SET NAMES utf8
SELECT * FROM tbl WHERE keyword LIKE '%居%'

「居」の文字コードはUTF-8です。

157 :NAME IS NULL:2007/10/19(金) 20:34:35 ID:???
「風居」とう文字列に対しての検索はしたの?

158 :NAME IS NULL:2007/10/19(金) 21:14:17 ID:fKi8KFKE
>>157
ID変わります。

「風居」に関してヒットしました。

159 :NAME IS NULL:2007/10/19(金) 21:41:14 ID:???
>>152
バージョンは?


160 :NAME IS NULL:2007/10/19(金) 21:46:53 ID:fKi8KFKE
肝心なバージョン忘れていました
さくらレンタルサーバーの4.0.2xです。

161 :NAME IS NULL:2007/10/19(金) 22:57:15 ID:???
あと大事なこと書いていませんでした。
現在、彼女募集中です。

162 :NAME IS NULL:2007/10/19(金) 23:16:15 ID:???
>>161
彼女の仕様は?
レンタルでもいいの?

163 :NAME IS NULL:2007/10/19(金) 23:20:42 ID:???
>>162
INSERTどころかSELECTも無理だよ。

164 :NAME IS NULL:2007/10/19(金) 23:38:11 ID:???
>>162
できれば居酒屋で働いてる様な娘がいいです

165 :NAME IS NULL:2007/10/19(金) 23:38:33 ID:fKi8KFKE
>>161
今日好きな子に彼氏ができたとこだ
だからその辺りは突っ込まないでくれ・・・

166 :NAME IS NULL:2007/10/19(金) 23:43:57 ID:fKi8KFKE
って大阪支部は大阪かwww把握wwww
3人いるみたいだから俺も参加していい?
何か参加資格とかあるのかな?

167 :NAME IS NULL:2007/10/19(金) 23:45:46 ID:fKi8KFKE
誤爆orz

168 :NAME IS NULL:2007/10/19(金) 23:55:10 ID:???
VIPなんぞ覗いてるから
彼女ができないんだよ

169 :NAME IS NULL:2007/10/19(金) 23:55:54 ID:fKi8KFKE
>>168
元カノなんだけどね・・・
ずるずる引きずってるのよ・・・
だからこんなレベルなんだ・・・

170 :NAME IS NULL:2007/10/19(金) 23:58:03 ID:???
もう drop して
新しいテーブルを create しろよ

171 :NAME IS NULL:2007/10/20(土) 00:01:32 ID:fUFTSHBK
新しいテーブルが作成できないみたい
心のパーミッションエラーだって・・・

172 :NAME IS NULL:2007/10/20(土) 03:13:49 ID:???
そもそも4.0はutf8サポートしてないんだけどそのへんどうなの


173 :NAME IS NULL:2007/10/20(土) 04:55:33 ID:???
案の定WebProg板から移動してましたね>>152

174 :NAME IS NULL:2007/10/20(土) 05:13:56 ID:2AwTGoKZ
すいません初心者でよく分からないのですが
ログインページであるIDでログイン後、そのIDの列にセッションIDを登録したいと考えています。
テーブルにはIDがすでに登録されていてSessionidにはNULLが入っている状態です。
教授宜しくお願い致します。

175 :NAME IS NULL:2007/10/20(土) 06:15:04 ID:???
すいません意味がわかりません・・・

176 :NAME IS NULL:2007/10/20(土) 06:27:02 ID:???
教授は土日休みです

177 :NAME IS NULL:2007/10/20(土) 06:57:25 ID:???
update USERTABLE set Sessionid='hogehoge' where id='hemohemo';

178 :NAME IS NULL:2007/10/20(土) 07:16:24 ID:fUFTSHBK
>>172
それは初耳です・・・

>>173
そのとおりです。

179 :NAME IS NULL:2007/10/20(土) 09:07:33 ID:???
>>178
これか。

9.5. Unicode のサポート

MySQL バージョン 4.1 以降、Unicode データを保存するために次の新しいキャラクタセットが用意されています: ucs2 (UCS-2 Unicode キャラクタセット)および utf8 (Unicode キャラクタセットの UTF-8 エンコード)。


180 :NAME IS NULL:2007/10/20(土) 09:44:58 ID:mSjzHsRr
すみません質問します。
今、テーブル作ってるんですが、フィールドの数が90個くらいになりそうです。
これは異常でしょうか。初心者なので、判断に迷っています。

181 :NAME IS NULL:2007/10/20(土) 10:31:40 ID:???
>>180
どんなテーブルかわからんと判断も出来ん。

それと、こちらで聞いた方がいいでしょう。

頼むから正規化しろよ 第二正規形
http://pc11.2ch.net/test/read.cgi/db/1116097001/


182 :NAME IS NULL:2007/10/20(土) 10:33:50 ID:???
>>180
設計間違ってるで九分九厘間違いないです。

(それ判断できない人が、ガチで90必要な大規模案件やってるわけないのでね)

183 :NAME IS NULL:2007/10/20(土) 12:23:24 ID:???
>>180
正規化やってその数なら問題ない
1000のカラム抱えたテーブル扱ってるけど普通に動くし

184 :NAME IS NULL:2007/10/20(土) 13:00:19 ID:???
180です  回答ありがとうございます。
テーブルは、ライブの情報を扱うものです。なので、
開催日、開始時間、料金、イベント情報etcの基本情報と
出演者名、出演者のURL、演奏楽器 の出演者情報etcの2種類に分かれます
出演者はイベントごとに1〜10人に分かれて不安定なので正規化・分離するなら
この部分かなぁと思うんですが、、 
この程度なら同じテーブルに入れてもいいのかなぁという気もして、判断しかねてます

185 :NAME IS NULL:2007/10/20(土) 16:43:44 ID:???
時刻の取得について質問です。
time_stというところにtimestampが入っていまして
select time_st from member where memname='test';と実行すると
time-st
2007-10-20 16:10:30
と取得できるのですがこれを20071020161030と繋げて取得するにはどのようにすればよいでしょうか?


186 :NAME IS NULL:2007/10/20(土) 16:49:54 ID:???
>>185
http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html

187 :NAME IS NULL:2007/10/20(土) 17:35:14 ID:???
>>186
ありがとうございました。無事できました〜。

188 :NAME IS NULL:2007/10/21(日) 00:34:22 ID:VLr/CFtZ
あるテーブルに削除フラグ(1か0がはいります)をalterで追加しようと思っているのですが、
charにしようかintにしようか迷ってます。

通常は、このような削除フラグのようなものは何の型にするのが普通でしょうか?


189 :NAME IS NULL:2007/10/21(日) 00:48:34 ID:???
一応BOOLEANがあるらしいよ
http://dev.mysql.com/doc/refman/5.1/ja/numeric-type-overview.html


190 :NAME IS NULL:2007/10/21(日) 15:15:54 ID:???
まぁtinyintなんだけどな

191 :NAME IS NULL:2007/10/21(日) 18:34:46 ID:???
MySQL 4.1.20 Windows

desc テーブル名でテーブルの構成情報が見られますけど、これをテキスト情報に落とすことって
出来ませんかね?


192 :NAME IS NULL:2007/10/21(日) 19:21:55 ID:???
>> table.txt

193 :NAME IS NULL:2007/10/21(日) 19:30:39 ID:???
mysql < desc.sql > xxxx.txt
で出来るんじゃないの

でもmysqldump使うのが一般的だと思う

194 :NAME IS NULL:2007/10/21(日) 19:38:07 ID:???
リダイレクトで見ることが出来ました。お二方、thxです。
Mysqldumpは書いた後、思いつきました(^^;。

195 :NAME IS NULL:2007/10/21(日) 22:06:09 ID:ORdmYlqR
初心者質問ですいません。
検索等実行時の戻り値に所要時間がありますが、
この値をPerlスクリプトから取得したいです。
でもMySQLのどの値にアクセスしていいのかわからず・・・
よかったらおしえてくださいm(_ _)m

196 :>>189:2007/10/21(日) 23:46:13 ID:???
>>189
ありがとうございますm(_ _)m

197 :NAME IS NULL:2007/10/22(月) 00:17:58 ID:???
MySQLのソース client/mysql.cc を読むと分かるけど
処理時間を計っているのはmysqldでもlibmysqlclientでもなく
mysqlコマンド本体。

だからPerlスクリプトから処理時間を知りたければ
Time::HiResあたりを使って自分で計るのがいいと思う。

use DBI;
use Time::HiRes;

$user = 'xxxx';
$pass = 'xxxx';

$db = DBI->connect('DBI:mysql:xxxx:xxxx', $user, $pass);
$sth = $db->prepare("select c1 from t1");
$t = Time::HiRes::time;
$sth->execute;
for ($i = 0; $i < $sth->rows; $i++) {
@r = $sth->fetchrow_array;
print "$r[0]\n";
}
$t = Time::HiRes::time - $t;
printf "%.4f sec\n", $t;
$sth->finish;
$db->disconnect;


198 :NAME IS NULL:2007/10/22(月) 16:12:58 ID:???
mysql5のレプリケーションは、
マスターのDBに対して、スレーブは、すべて既存のDBが消去されて、
マスターのDBが複製されるのでしょうか?

マスターのDBが、スレーブに追加されるような形で複製されて欲しいのですが・・・。

199 :NAME IS NULL:2007/10/22(月) 17:58:08 ID:???
MySQLのレプリケーションはSQLが流れるだけだから
マスタにないDB・テーブルがスレーブにあるのは大丈夫。
ただしスレーブにSQLを流す時点で不整合があるとそこでレプリケーションが停止する。


200 :195:2007/10/22(月) 21:00:30 ID:???
>>197
ありがとうございます。mysql.ccはまだ読めていないのですが
Time::HiResで計測することができました。
サンプルコードまでいただきたすかりました!

201 :198:2007/10/22(月) 23:00:11 ID:???
>>199
ありがとうございます。
現在レプリケーションの設定ですが、いろいろつまずいています。

MyISAMの小さなデータベースで練習をしているのですが、
この場合も「バイナリログ」を使った更新になるのでしょうか?
MyISAM用の単純な方式(クエリのテキスト文をスレーブに投げる等)なものがあるのでしょうか?

あと、レプリケーションのタイミングは、
update、delete等、データベースが変わる瞬間にレプリケーションをするのでしょうか?
タイマーのようなもので、一定間隔で変わるのでしょうか?

202 :NAME IS NULL:2007/10/23(火) 00:16:34 ID:???
>>201

>MyISAM用の単純な方式(クエリのテキスト文をスレーブに投げる等)なものがあるのでしょうか?
No

>update、delete等、データベースが変わる瞬間にレプリケーションをするのでしょうか?
YES
トランザクション開始とcomittもレプリケーションされる。
バイナリログを見ればわかる。
自分で実験されたし。


203 :NAME IS NULL:2007/10/23(火) 09:37:12 ID:jG23x/MR
left joinとright joinの違いって結構大きいのでしょうか?

元データが1万件ぐらいあるとき、left joinだと処理が遅くなり、
right joinだと遅さを感じませんでした。

204 :NAME IS NULL:2007/10/23(火) 10:50:38 ID:???
>>203
indexはどーなってるん?


205 :NAME IS NULL:2007/10/23(火) 10:55:03 ID:???
>>203
index含め同じ条件で結合しての結果でしょうか?

206 :203:2007/10/24(水) 01:59:09 ID:???
>>204-205
そうです。indexを含めてleft joinをするとかなり重たいです。


207 :NAME IS NULL:2007/10/24(水) 10:58:41 ID:???
いいからexplainしろよ


208 :NAME IS NULL:2007/10/25(木) 09:29:08 ID:???
半角カタカナ、全角半角英字、などみなさんはどのように対処されていますか?
入力時に全部統一させる、清音化した列を新たに設ける、その都度関数を用いて変換比較する
結構悩ましい問題だと思うのですが・・・

209 :NAME IS NULL:2007/10/25(木) 10:32:04 ID:???
うちでは
入力されたデータの中の
半角カタカナは勝手に全角カタカナに変換
全角英数字は勝手に半角英数字に変換
するプログラムを経由してから
SQL薄幸してます


210 :NAME IS NULL:2007/10/25(木) 11:16:38 ID:???
>>209に幸多かれ

211 :NAME IS NULL:2007/10/25(木) 18:56:56 ID:/t1iB/b6
MySQL 4.1.20 を、Linux でつかっています。
コマンドラインの mysql コマンドで SQL をたたくとき、
set autocommit=0;
を毎回実行すれば Auto Commit はオフにできますが、毎回打つのが面倒です。
my.cnf に書いたりできないのでしょうか?

212 :NAME IS NULL:2007/10/25(木) 19:23:28 ID:???
できる

213 :NAME IS NULL:2007/10/25(木) 19:46:11 ID:???
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_32 をみて、
/etc/my.conf の [mysqld] のブロックに

init-connect='SET AUTOCOMMIT=0'

を追加しました。

grant 文でスーパーユーザじゃないユーザをつくって mysql コマンドで接続したところ、
Auto Commit が 0 になっていました。

でもこれだとスーパーユーザが接続した場合は、Auto Commit = 1 のままですが、
これはしょうがないのでしょうか?

214 :NAME IS NULL:2007/10/25(木) 23:32:34 ID:???
しょうがない。

215 :NAME IS NULL:2007/10/26(金) 00:05:42 ID:???
排他制御について質問させてください。

以下のようなtable Aがあったとします。
----------------------------------
id | data
----------------------------------
1 | aaa
2 | bbb
3 | ccc

この状態で、データをinsertする場合、
以下のようにidのmax値を取得して、
select max(id) from A;
max値に+1をして、insertという流れになるとします。

複数のプログラムがこのテーブルにデータをinsertする可能性がある場合、
テーブル毎ロックする必要があるでしょうか?

#auto incrementはコーディング規約で使わない方針となっています(T_T

216 :NAME IS NULL:2007/10/26(金) 00:42:50 ID:???
AUTO INCREMENT も使えないこんな世の中じゃ

217 :NAME IS NULL:2007/10/26(金) 00:50:40 ID:???
>>215
id の値がユニークであればいいなら
create table A ( id integer auto_increment primary key, data char(3));
とでもして
insert into A (data) values ('aaa');
と id を指定せずに挿入するのはどうか

218 :NAME IS NULL:2007/10/26(金) 01:03:37 ID:???
>>215さんとは別人ですが、便乗して教えてください。
auto_incrementにしてあるテーブルがあるのですが、
コレ他のサーバーに移行するとauto_incrementの値はどこからスタートするのでしょうか?

auto_incrementの列に欠番があるので、1,3,4,5,7...のようになっています。
別のサーバーに移行したときに、auto_incrementがある列の最大値+1から自動的にカウントしてくれると助かるのですが。

219 :NAME IS NULL:2007/10/26(金) 01:05:55 ID:???
そのままinsertすれば問題ない


220 :211:2007/10/26(金) 14:37:10 ID:???
やはり仕方がないのですね。

>>213 では、サーバ側の設定ですが、どちらかというとクライアント側で、
oracle の sqlplus の login.sql みたいに、毎回起動時に set autocommit=0 とかできないかなと思っていたのですが、
そういう方法はないということであきらめます。
(あとは、毎回起動時に良く使うコマンドを、source コマンドで実行するぐらいか)

221 :NAME IS NULL:2007/10/26(金) 19:38:34 ID:???
>>218
過去にそのテーブルが経験した最大値プラス1から始まる。
値は以下のコマンドで確認できる。

show table status like "hogeTable"

222 :NAME IS NULL:2007/10/27(土) 14:57:36 ID:g8S8hRuK
聞きたいんですけど、みんなDBの管理ってmysqladminでやってるんですか?
というか、これってwin環境ですか使えないんですよね?
Linux環境で同じようなこと出来るソフトってないんでしょうか?

223 :NAME IS NULL:2007/10/27(土) 15:34:28 ID:???
Linuxでも動くでしょMySQLAdmin

224 :NAME IS NULL:2007/10/27(土) 16:36:17 ID:???
そうなんですか? よく調べてみます
ありがとう

225 :NAME IS NULL:2007/10/27(土) 17:14:47 ID:???
>>224
Windows版にくっついてるGUIのやつかなあ?
>>223と想像してるものとはちがうのかもしらん。
どっちにしても大していいツールでもないので、ほかのを使うか自分でSQLを打つかすることになるだろう。

226 :NAME IS NULL:2007/10/27(土) 19:36:17 ID:???
質問させて下さい。
WindowsXP SP2 にてMySQL 5.0.43をメモリ2G搭載して使っています。
1:my.cnf の設定を変更し再起動をかけたのですが一部設定通りに反映されていない部分がある。
2:設定値についての疑問

1については 下記以下一部抜粋 のように設定してあります。
skip-locking
key_buffer=1024M
table_cache=1024
max_allowed_packet=4M
sort_buffer_size=2M
read_buffer_size=4M

SHOW VARIABLES; を打つと、table_cache 763 と表示され、設定した1024ではありません。
また、SET GLOBAL table_cache=数値; を実行するときちんと設定値になります。
設定ファイル通り読み込ませたいのです。

2については設定値の〜Mや〜Kはわかるのですが、単位のついていないもの、例えばtable_cache等はバイトと考えればよいのでしょうか?
だとすればグローバルキャッシュなのにもかかわらずあまりに使用メモリ量が少ないんじゃないかと思っています。

最後に、現在メモリを多く使用するよう設定してMySQLの挙動テストをしているのですが、どれだけメモリを大きく設定しても
key_buffer以外の設定だとメモリ利用料が5Mもあがりません。
SHOW VARIABLES;では殆どの値がきちんと設定値になっていますが、本当にメモリを使用しているのか少々不安です。

また、設定値自体の項目についてはいろいろなサイトで見かけますが、設定についてもう一歩踏み込んだ、
挙動を想像・把握できるような解説がなされているサイト等はありませんでしょうか?
MySQLドキュメント当を見ながらやってきたのですが行き詰ってしまいました。
よろしくお願いします。

227 :NAME IS NULL:2007/10/27(土) 20:09:59 ID:???
1.
table_cache=700
と書くとどうなる?
OSレベルの制限値を見てmysqldが勝手に値を絞っているのかもしれない。

2.
table_cacheはハンドラというテーブルを管理する内部構造の「数」を示す。
サーバへの同時接続数が100あって、それらが平均的に
テーブル3つにアクセスするSQLを実行するなら、table_cacheは300以上にする。

sort_buffer、read_bufferは
それが必要となるようなSQLを実行しないと確保されない。

> 設定についてもう一歩踏み込んだ、
> 挙動を想像・把握できるような解説がなされているサイト

英語を苦にしないならこのへん。
http://forge.mysql.com/wiki/MySQL_Internals

書籍ならこのへん。バージョン3.xや4.xの本を買わないように注意!
・現場で使える MySQL
・MySQL 辞典

残念ながら、最終的にはソース嫁としか言えない。


228 :226:2007/10/27(土) 20:57:38 ID:???
>>227
レス有難うございます。
table_cache=700 => 起動 => 設定値700
table_cache=512 => 起動 => 設定値512
table_cache=1024 => 起動 => 設定値763
という結果になりました。

おっしゃるとおりなのかもしれません。Linuxを覚えたほうがいいのかもですね・・・
その他の解説についても大変勉強になります。有難うございます。
少々英語アレルギーですが goo辞書に頼ってがんばって見ます!
本も明日早速見てきます。

229 :NAME IS NULL:2007/10/28(日) 14:09:32 ID:???
UTF8のテーブルを使って文書を(主に)LIKE検索するプログラムを作っています。
ひらがなとカタカナを吸収してもらえるので重宝している反面、
一方のみの結果だけでじゅうぶん、ということも多いです。
例えば人名で「アリス」と入力したとき、「〜ありすぎて」までヒットしてしまうから・・
これをSQL文など外部から制御する方法はあるでしょうか?
MySQLは4.1です。

230 :NAME IS NULL:2007/10/28(日) 16:43:09 ID:???
MySQL5で

id = PK
name = UNIQUE

というカラムのある果物テーブルがあるとして

REPLACE INTO 果物 SET name = りんご
を一回やると

id 1 name りんご

というレコードができるのですが、

REPLACE INTO 果物 SET name = りんご
もう一度やると

id 2 name りんご

とういうレコードができます。
これを、

id 1 name りんご

にするにはどうしたらいいですか?

231 :NAME IS NULL:2007/10/28(日) 16:50:37 ID:???
REPLACE は INSERT とほぼ同じように動作しますが、唯一異なる点として
UNIQUE インデックスまたは PRIMARY KEY に関して新しいレコードと同じ値が
テーブル内の以前のレコードに含まれていると、以前のレコードが削除されてから
新しいレコードが挿入されます。

232 :NAME IS NULL:2007/10/28(日) 23:44:39 ID:???
そもそも何を期待してるのかが不明

233 :NAME IS NULL:2007/10/29(月) 03:36:28 ID:???
教えてください。
テーブルにPK1、PK2、PK3という3つのPKと4つ目のフィールドFLD4があり、
PK1、PK3、FLD4の3つで構成されたインデックスIDX1があります。

select
 PK1, Max(FLD4)
From hoge
Where PK3='hogehoge'
Group By PK1

というSQLをexplainで調査すると
Using where; Using index; Using temporary; Using filesort
が現れます。

このテーブルには2000万件のレコードがあるのですが、
Using temporary; Using filesortが現れるのはレコード数のせいでしょうか?


234 :NAME IS NULL:2007/10/29(月) 15:14:34 ID:???
>>233
PK3 と PK1 で複合インデックス作ってみたら。

235 :NAME IS NULL:2007/10/29(月) 15:16:08 ID:???
>>229
分かち書きした検索用カラムを作って likeすれば。
または、セナれば。

236 :>>215:2007/10/30(火) 02:21:14 ID:???
ありがとうございます。

237 :NAME IS NULL:2007/10/30(火) 07:52:01 ID:sLI+LWeo
データ型について質問です。

数字を入れる箇所をintやfloatなどのデータ型にしているのですが、
これだとデフォルト値が必ず0になります。

0にしたくないのですが、数字用のデータ型を使っている場合は
仕方ないのでしょうか?varcharなどの文字用にするべきでしょうか?

238 :NAME IS NULL:2007/10/30(火) 08:00:56 ID:???
デフォルトはNULLになるけど?

mysql> create table test (c1 int primary key, c2 int);
Query OK, 0 rows affected (0.04 sec)

mysql> insert into test(c1) values (1);
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
+----+------+
| c1 | c2 |
+----+------+
| 1 | NULL |
+----+------+
1 row in set (0.00 sec)

239 :NAME IS NULL:2007/10/30(火) 09:31:17 ID:???
>>238
本当ですね・・・。
いつもphpMyAdminで作成していたので、出来ないと思ってました。

アドバイスありがとうございました。

240 :237:2007/10/30(火) 09:45:19 ID:???
すみません、もう一つ自己レスです。
phpMyAdminはPHPなわけですが、その他のPHPのプログラムでも

mysql> insert into test(c1,c2) values (1,'');

では駄目なんですね。空であっても''があると、
そのフィールドには0が入ってしまうみたいです。

241 :NAME IS NULL:2007/10/30(火) 09:59:21 ID:???
0解釈はDB次第だが、少なくとも '' はnullじゃないからね。

242 :NAME IS NULL:2007/10/30(火) 18:56:41 ID:Pyowqw9l
【簡単のため】【簡単のため】【簡単のため】
http://academy6.2ch.net/test/read.cgi/gengo/1193737465/


243 :229:2007/10/30(火) 20:08:04 ID:???
>>235
遅レスすみません。
分かち書きは考えてみたのですが、そうすると複合語にマッチしづらくなりませんか?
ユーザー入力も同じ仕組みで分かち書きすればいいのかもしれないんですが
文書中、わりと崩した日本語も多いことから難しそうです。
Sennaや標準のFULLTEXTは使える環境になくて・・・
SET文などでスイッチできそうな気もするんですがどうも情報見つかりません。

244 :NAME IS NULL:2007/10/30(火) 22:18:54 ID:???
>>243
切り替えはCOLLATEで可能なんだけど、あなたの望むようなモノが用意されてるかは調べてません。
まあこのへんを読んでちょ。
http://dev.mysql.com/doc/refman/5.1/ja/charset-mysql.html
http://dev.mysql.com/doc/refman/5.1/ja/charset-collate.html


245 :NAME IS NULL:2007/10/31(水) 11:02:22 ID:???
>>229
フルテキストは分かち書きして保存する。
入力文字ももちろん分かち書きする。
で、入力文字を分かち書きした区切り分クエリする。
そのとき前後の区切りも検索の対象にするのがポイント。
だけど決してパフォーマンスは出ないのでデータ数によっては注意しる。

246 :NAME IS NULL:2007/10/31(水) 11:44:58 ID:???
>>229
245 だけれども、質問をよく読むと テーブルの Collation を utf8_general_ci にすれば良いだけの話か。
utf8_unicode_ci になってない?

247 :229:2007/10/31(水) 13:15:29 ID:???
>>245-246
ありがとうございます。
テーブルのcollationはutf8_unicode_ciにしています。

COLLATEはまったく知らなかったので、昨夜>>245を見て確認してみました。
テーブル作成時にutf8_unicode_ciを指定したことをあまり意識していなくて
>>229に書かなかったのがよくなかったですm(_ _)m
utf8_unicode_ciのテーブルに対するSELECT文にCOLLATEを入れることで、
ひらがな、カタカナが分けて検索されるのを確認できました。
SELECT * FROM table_name
WHERE column_name COLLATE utf8_general_ci
LIKE '%foo%' ORDER BY ・・・(続く)

検索フォームでオプションとして切り替えたりすれば便利だなと
喜んでいたんですが、その後の挙動がちょっとおかしいみたいで・・・
次の検索でCOLLATE〜を指定しない検索をした場合でも
utf8_unicode_ciの検索に戻らないみたいだったんです。
テーブルのステータスを確認しても、ちゃんとutf8_unicode_ciなんですが・・

多分、上記の挙動はなにか別の理由というか勘違いっぽい気もしてるので
今夜さらに確認してからお返事をと思っていたんですが
>>246でちょうど指摘をいただいたので取り急ぎ書き込みました。
たいへん参考になりますm(_ _)m

248 :229:2007/10/31(水) 20:55:14 ID:???
先ほど確認できました。
>>247のSQL文で問題なくスイッチできました。

動作がうまくいかなかった部分については、やはり別の理由からで
検索を試した何パターンかの自作スクリプトのうちのひとつに原因があったものでした。
そのときは突っ込まずにすぐ寝てしまったので・・すみません。

いただいた回答、たいへん参考になりました。ありがとうございましたm(_ _)m

249 :NAME IS NULL:2007/11/01(木) 00:20:39 ID:???
limit句についてご質問があります。

あるテーブルにn件のデータがあるとして、
limit 3,n
のようなことをしたいのですが、どのようにすればよろしいでしょうか?
limitでなくても構わないのですが、、よろしくお願い致します。



250 :NAME IS NULL:2007/11/01(木) 01:40:04 ID:???
>>249
先頭3行を読み飛ばして続くn行を表示って意味かな。
だとしたら正しくはlimit n,3(LIMIT n OFFSET 3)で
3行とばして最後までだとlimit -1,3かと。

251 :>>249:2007/11/01(木) 01:50:57 ID:???
>>250
感動しました!


252 :NAME IS NULL:2007/11/01(木) 02:12:23 ID:???
>>250
mysqlのlimitって-1指定できないんじゃないかな?
postegar sqlだと、limit all offset 3
とか指定できると思ったけど。。


253 :250:2007/11/01(木) 04:45:12 ID:???
ご、ごめん、今になって確認したら俺全然でたらめ書いてるorz
limit 3,nが正しくて、-1指定もエラーになってしまった。
手元のマニュアル確認したらやはり-1指定と書かれているんだが
バージョンの違いかな。
allもだめでした。ううーん申し訳ない。

254 :NAME IS NULL:2007/11/01(木) 16:48:38 ID:???
手元のマニュアルって何よ?
ここでは「とにかくでかい数を入れろ」って書いてあるけど。
http://dev.mysql.com/doc/refman/5.1/ja/select.html


255 :>>252:2007/11/02(金) 01:43:53 ID:???
>とにかくでかい数を入れろ
リアルで笑ったw
MySQLはこういうところが、おもちゃなんだよなぁ。。。


256 :NAME IS NULL:2007/11/02(金) 04:03:21 ID:???
それが上限値だな
でかけりゃいいというもんじゃない

257 :NAME IS NULL:2007/11/02(金) 09:44:50 ID:???
上限値を指すような「SAIDAI」とか適当なエイリアスを
定義しとけば笑われずに済んだのにな

258 :NAME IS NULL:2007/11/02(金) 12:23:32 ID:???
SELECT文で取れるデータ自体がmax_join_sizeで
制限されているので、
このパラメータの値を入れるのが
お作法としてはいいと思う。
ちなみにデフォルト値は2^64

259 :NAME IS NULL:2007/11/02(金) 19:09:19 ID:???
マイナーバージョンが違うMySQLを同時に動かすにはどうすればいいんでしょうか。

my.cnfのsocketを変えても認識されないです。。。

260 :NAME IS NULL:2007/11/02(金) 19:39:30 ID:???
>>259
違うmy.cnf使えば?

261 :NAME IS NULL:2007/11/03(土) 01:12:05 ID:IOTlj/gO
質問です。

アクセスログのようなものを作る際にdatetime型のカラムと、日毎に
group化するためのdate型のカラムを用意しようかと思いました。
しかしマニュアルを見るに、ver4.1以上の場合はdatetime型のカラムに対して
date関数を使用すると日付部分のみを取り出せ、高速でgroup化もできるとのこと。

インデックスを張ったdate型カラムに対しての検索と、date関数を通した
datetime型に対する検索は等速なのでしょうか?それとも後者が早いのでしょうか?
そのあたりの仕様が記述されているページを教えて頂けると勉強になります。

よろしくお願いします。

262 :NAME IS NULL:2007/11/03(土) 05:46:47 ID:???
>>261
最近の若いのは実験もせずに、すぐに答えを求めようとするんだよなぁ。
ゆとり教育のせいかもしれんで、国の責任もあるんやろな。

自分が直面している課題について、どのような実験をすれば答えを導き出せるのか
計画を立てて結果を資料にまとめる。ってことをしないと社会でいらない子になるよ?

>>261は少なくとも実験してから、ココにくるべし。

263 :NAME IS NULL:2007/11/03(土) 06:13:01 ID:???
「ゆとり教育」っていうネーミングも失敗だったよなぁ。 いかにもアホっぽいもん。

「ものづくり大学」ってのはよさそうだけど、「ゆとり大学」ってあったら
なんかヤバそうだもんなぁw

264 :NAME IS NULL:2007/11/03(土) 06:26:04 ID:???
>>259
ソケットとポート番号かえればいけると思うよ。


265 :>>264:2007/11/03(土) 06:28:28 ID:???
捕捉。

mysqlデーモンその1:ソケットは、/tmp/mysql1.sock ポート番号は3306
mysqlデーモンその2:ソケットは、/tmp/mysql.sock ポート番号は3307

おかわり?

266 :>>265:2007/11/03(土) 06:30:26 ID:???
おかわりしてどうするorz

×おかわり?
◯おわかり?



267 :>>265:2007/11/03(土) 06:32:12 ID:???
ごめん。

デーモンその2のソケットは、mysql2.sockの間違い。

なんか、もう限界みたいなので寝るw

これもゆとり教育のせい。国が悪い。


268 :NAME IS NULL:2007/11/03(土) 08:39:36 ID:???
ゆとり改行

269 :NAME IS NULL:2007/11/03(土) 17:57:22 ID:???
>>267
UNIXドメインソケットの指定とポートの指定は別物だよ
そもそもUDSにポート番号なんてないだろ
だからこの場合、my.cnfを複数用意してクライアント側で


おっとこんな時間に来客のようだ・・・

270 :NAME IS NULL:2007/11/03(土) 20:33:48 ID:???
xreaのレン鯖を借りているのですが、このエラーが出て困っています。
これって、私のプログラムが悪いのでしょうか。
xreaの管理者に連絡しても対応してもらえないので、
私が悪いのかと思っているのですが、対処法がわかりません。
宜しくお願いします。

mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]:
Can't connect to local MySQL server through socket '/tmp/mysql.sock'

271 :NAME IS NULL:2007/11/03(土) 22:02:33 ID:???
>>270
ユーザ名に@localつけてもだめか?

272 :>>265:2007/11/03(土) 23:07:58 ID:???
>>269
同じサーバに複数のmysqld立ち上げるんなら、ポート番号は別にする。
これ常識。


273 :NAME IS NULL:2007/11/03(土) 23:09:19 ID:???
>>270
mysqlデーモン立ち上がってないだけじゃね?


274 :NAME IS NULL:2007/11/04(日) 01:09:36 ID:AhMqLM4v
まさかとは思うんだが、
LEFT JOINの対応ってバージョン4.1から・・・?
4.0.27では使えなかったり?

275 :NAME IS NULL:2007/11/04(日) 06:32:23 ID:???
さすがにそれはない。
他と勘違いしてない?

276 :NAME IS NULL:2007/11/04(日) 08:07:06 ID:AhMqLM4v
じゃあ使い方が間違ってるのかな・・・

277 :NAME IS NULL:2007/11/04(日) 08:21:47 ID:???
LEFT JOINが使えないなんて、AND演算子が使えない
に匹敵する不便さだぞ。 ありえない。

278 :NAME IS NULL:2007/11/04(日) 08:29:01 ID:???
かなり昔はできんかったよ

279 :NAME IS NULL:2007/11/04(日) 14:01:34 ID:frlhQ05O
【速報】人気アニメ『涼宮ハルヒの憂鬱』テレビドラマ化! ハルヒ役は志田未来★part4
http://sports11.2ch.net/test/read.cgi/parksports/1193830877/l50

280 :NAME IS NULL:2007/11/04(日) 17:46:24 ID:???
MySQL4.0.27で、
「fruits」フィールドに
「りんご,バナナ,キュウリ」
みたいな複数の値を持ったレコードを入れてます。

fruitsフィールドを「りんご」や「バナナ」というキーワードで
SELECTした場合、そのレコードがヒットするように
したいのですが、
この場合、fruitsフィールドの型ってvarcharでいいんでしょうか?
enumとかでいけるかと思ってたんですが、
実際にちょっと調べてみたら、
enumとかsetは複数の値のいずれかに限定するものであって、
複数の値を格納する型ではないですよね?

また上記をスマートに実現できる構文などがあったら教えてくださいませ、
汚くなっても良いならREGEXPとか使えばできるのは想像がつきますが。

281 :NAME IS NULL:2007/11/04(日) 18:56:52 ID:???
select * from テーブル名
where fruits like '%バナナ%'
or
select * from テーブル名
where fruits like '%りんご%'



select * from テーブル名
where fruits in ('%バナナ%','%りんご%')

でどうだろうか?

おれ、msde使ってるんで、MYSQLのワイルドカード知らんので % じゃなくて *
かも知れないです

違ってたらごめんなさい。



282 :NAME IS NULL:2007/11/04(日) 18:58:13 ID:???
ごめん。型の話でしたか… スマソ

283 :NAME IS NULL:2007/11/04(日) 19:13:08 ID:Vy5gGImB
MySQL Control Centerっての使ってる人いますか?
かねやんMysqlAdminなどとくらべて使い勝手はどうでしょう?
また、phpMyadminを利用されている方、利用上の注意点などはどんなことがありますか?
phpMyadminってのは商用利用にも安心なツールなんでしょうか?
色んな意見を聞きたいです、よろしくお願いします

284 :NAME IS NULL:2007/11/04(日) 19:45:45 ID:???
>>280
値の個数が固定なら、それぞれの値の有り無しをビットで表すとか
値1 = 0x1000
値2 = 0x0100
値3 = 0x0010
値4 = 0x0001

285 :NAME IS NULL:2007/11/04(日) 21:42:34 ID:???
>>280
enumは複数の値のうちの1個だけど、setは複数の値のうちの複数個

286 :NAME IS NULL:2007/11/04(日) 22:12:37 ID:???
>>280
setの仕組みは>>284と同じだったかと。

287 :NAME IS NULL:2007/11/05(月) 02:41:12 ID:???
IN()ってやると、INで指定したもののどれかが含まれてれば良しになりますけど
指定したやつ全部が含まれてれば良しとするようなものってありませんか?

288 :NAME IS NULL:2007/11/05(月) 03:44:45 ID:???
それって、条件式は真になるの?

289 :NAME IS NULL:2007/11/05(月) 04:05:16 ID:???
>>287
数値に限れば、そんな条件あり得ない

290 :NAME IS NULL:2007/11/05(月) 11:09:19 ID:???
>>280

>>286 か、テーブル分離する。


291 :NAME IS NULL:2007/11/05(月) 12:11:38 ID:HiIC9Mcf
質問です
自動インクリメントする ID の初期値を10000にして、以降は
10001,10002,1003… としたいんですがどうしたらいいでしょう
よろしくお願いします

292 :NAME IS NULL:2007/11/05(月) 15:03:01 ID:???
お前ら、副問い合わせをサポートしたのは 4.1以降だぞ。

293 :NAME IS NULL:2007/11/05(月) 16:08:41 ID:???
>>291
http://dev.mysql.com/doc/refman/5.1/ja/alter-table.html

ALTER TABLE `table_name` auto_increment=10001


294 :NAME IS NULL:2007/11/05(月) 19:21:15 ID:???
MySQLはPDFとかでインストールできるマニュアルってありますか?


295 :NAME IS NULL:2007/11/05(月) 19:39:58 ID:???
これじゃダメなん?
http://dev.mysql.com/doc/

296 :NAME IS NULL:2007/11/06(火) 01:45:32 ID:1jsfWYs7
テーブルの複製ってどうしたらいいんですか?
clone_tableってのが検索したら出てきたんですが、例文が見つからないです
そもそも違うんでしょうか?

297 :NAME IS NULL:2007/11/06(火) 01:47:27 ID:???
>>296
ダウンプしてテキストエディタで編集して流し込む

298 :NAME IS NULL:2007/11/06(火) 02:08:43 ID:???
同じ構成のテーブルを create して
insert into 複製TBL select * from 元TBL;
とか


299 :NAME IS NULL:2007/11/06(火) 02:16:01 ID:???
>>298
それは、データの複製だろうが。市ね!

300 :NAME IS NULL:2007/11/06(火) 02:23:00 ID:???
質問してるくせに態度でけえな

301 :NAME IS NULL:2007/11/06(火) 02:34:28 ID:1jsfWYs7
いや、自分>>296だけど>>299はちがいますよ

>>297-298
どうもありがとう
かなりややこしいみたいですね、そんなことないのかな
どうしたもんか、、もう少し調べてみます

302 :NAME IS NULL:2007/11/06(火) 02:57:24 ID:???
>>301
つかどういうタイプの複製?
ガシガシ更新されるテーブルのリアルタイムの複製・・・レプリケーション
あるホストの現時点のテーブルを別のホストに複製・・・ダンプ&インポート
などなど

303 :301:2007/11/06(火) 03:10:44 ID:1jsfWYs7
>>302
ありがとうございます。ガシガシ更新されるタイプではないと思います。
フォームの記入確認のための仮登録のためのテーブルがほしくて、
本登録用のテーブルを複製したいと考えてます。テーブルも今はカラです。

それだけ考えたらデータないんだから手作業で作ればいいって話なんですが、
いずれバックアップの知識も必要と思ったので聞きました。
テーブル単位で複製とDB丸ごと複製の違いすらよくわかってないんで、
いろいろ聞きたいなと。。

>ガシガシ更新されるテーブルのリアルタイムの複製・・・レプリケーション
>あるホストの現時点のテーブルを別のホストに複製・・・ダンプ&インポート
どっちも大切そうですね
使い分けも含めて、どこかわかりやすく解説してるサイトないでしょうか 
レプリケーションて聞いたのも初めてですが…

304 :NAME IS NULL:2007/11/06(火) 12:01:12 ID:???
>>303
とりあえずこのへんかな
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060122/227654/?ST=oss

305 :NAME IS NULL:2007/11/06(火) 12:44:20 ID:???
>>303
ま、とりあえずググレ。または自分のレベルにあった本を嫁。

306 :301:2007/11/06(火) 15:40:03 ID:???
>>304
おお、ありがとうございます
よくわからないのでやっぱり本買ったほうがいいですね
>>305もサンキュ

307 :NAME IS NULL:2007/11/08(木) 10:17:12 ID:???
ワイルドカードで複数のDBを管理するアカウント作成方法を教えてください
例えば、aaa-aaa と aaa-bbb と aaa-ccc のDBを操作出来るようにするにはどうやったらいいのでしょう?

grant all on aaa%.* to ユーザー名@localhost identified by 'パスワード';
で作るとエラーが出て作れません。
%がワイルドカードですよね?

308 :NAME IS NULL:2007/11/08(木) 11:12:54 ID:???
`aaa-%`.* とか

309 :NAME IS NULL:2007/11/08(木) 12:41:46 ID:???
>>308
あ!
もしかして「``」が必要なんでしょうか?
自分は「''」でやっていたので駄目だったのかな。

310 :NAME IS NULL:2007/11/08(木) 14:44:06 ID:???
そうでした
ありがとうございました!

311 :NAME IS NULL:2007/11/09(金) 12:04:19 ID:VVwJql6u
drop table test;


日付と、果物名と、金額の以下のようなtableですが、
---------------------------------
create table test(
 date date,
 item varchar(255),
 money int
) charset=utf8;

insert into test(date,item,money) values('2007-01-01', '林檎', 100);
insert into test(date,item,money) values('2007-01-02', '林檎', 99);

insert into test(date,item,money) values('2007-01-01', '蜜柑', 100);
insert into test(date,item,money) values('2007-01-02', '蜜柑', 99);
---------------------------------

一番最新の日付の価格を果物ごとに知りたい場合のselectはどのようにしたら良いのでしょうか?

単純に group by item とすると 1/1 の金額が出てしまうので、order by で並び替えた後に group by できるといいのですがやはり構文エラーとなります。

どのような select文 だとできるのでしょうか?


一応、単純に考えると以下のような形は思い浮かびますがこれが最良なのでしょうか。
SELECT * FROM (SELECT date, item, money FROM test ORDER BY date desc) a GROUP BY a.item;


312 :NAME IS NULL:2007/11/09(金) 12:30:33 ID:???
select max(date),item from test group by item

313 :312:2007/11/09(金) 12:57:47 ID:???
ごめん 果物ごとの価格なのね

select test.date,test.item,test.money from test, (select max(date) as date,item from test group by item) a
where test.date = a.date and test.item = a.item;

314 :NAME IS NULL:2007/11/09(金) 13:10:55 ID:???
複数バージョンのmysqlをlinuxにインストールして同時に使用したいのですが、
方法などを解説しているサイトなんかがあったら教えてください。
バージョンは4.1xと5.0xを入れたいです。よろしくお願いします。

315 :NAME IS NULL:2007/11/09(金) 14:56:53 ID:VVwJql6u
>>313
有難う御座います。参考になります。

316 :314:2007/11/09(金) 15:01:42 ID:???
テンプレのFAQを足がかりにいろいろ試してみて自己解決しました。
お騒がせしました。

317 :NAME IS NULL:2007/11/09(金) 18:34:27 ID:???
MySQL5.1ってWin98には対応して無い?
前に4.0使ったときは98向けの管理ソフトも同梱してたはずなんだけど・・・

318 :NAME IS NULL:2007/11/09(金) 19:01:08 ID:???
Win9x時代って、サービスって動かせたっけ?

319 :NAME IS NULL:2007/11/09(金) 19:27:30 ID:???
やっぱサービスでしか動かせない?

320 :NAME IS NULL:2007/11/09(金) 19:38:28 ID:???
なんとか4.0探してきた…
XOOPS入れようとしただけで何故こんなに苦労を・・

321 :NAME IS NULL:2007/11/11(日) 00:11:18 ID:???
さくらインターネットが未だに化石のようなmysql4.02なんてバージョン使ってるから
うまく動かないサブクリエがあってはまった。
死ねよ

322 :NAME IS NULL:2007/11/11(日) 00:56:00 ID:???
4.1なら状況はだいぶ変わるのにねぇ。


そんなうちの仕事場は3.2。

323 :NAME IS NULL:2007/11/11(日) 02:05:07 ID:???
俺のPCはWin98SE
だから4.0しか使えない・・

324 :NAME IS NULL:2007/11/11(日) 04:51:39 ID:???
サブクリエ

325 :NAME IS NULL:2007/11/11(日) 05:57:52 ID:???
本来ならWin98SEなぞ最初から対応せずにステでもよかったぐらいでは
PC98とかじゃない限りLinuxでも入れたほうが幸せになれそうだ

そういえば漏れのクリエ埃まみれだぜ

326 :NAME IS NULL:2007/11/11(日) 11:43:48 ID:???
PC98ならFreeBSDでええやん


327 :NAME IS NULL:2007/11/11(日) 13:02:30 ID:???
そろそろ新しいの買えよ。

328 :NAME IS NULL:2007/11/11(日) 13:19:07 ID:???
>>322
3.23 ならともかく、3.2 はないだろ。

329 :322:2007/11/11(日) 13:32:52 ID:???
>328
あ、3.23だ。誤字すまん

330 :NAME IS NULL:2007/11/11(日) 16:09:05 ID:???
5000テーブルくらいあるMyISAM型DBでうまくキャッシュさせる方法はあるでしょうか?
table_cacheはデスクリプタ数の制限で頭打ちになるようでテーブルをスキャンすると
まったくヒットしなくなります。アドバイスよろしくお願いします。

331 :NAME IS NULL:2007/11/11(日) 19:13:40 ID:???
スレ違いだったらすいませんが、、、、

OS XPPro
MySQL 4.1.20

かねやんMySQLAdmin 1.43
サーバのキャラクタセット ->
クライアントのキャラクタセット -> sjis

となっていて日本語が正しく表示できないんですけど、
対処方法とか判る方おられませんか?



332 :NAME IS NULL:2007/11/11(日) 20:15:57 ID:8MXImYta
>>331
サーバのキャラクターセットがsjisではないから

333 :kbtUzOSLgCqw:2007/11/12(月) 01:52:15 ID:???
aBjp6C <a href="http://tiggsdeqsggu.com/">tiggsdeqsggu</a>, [url=http://itjnkpnbgxqv.com/]itjnkpnbgxqv[/url], [link=http://mgpltdmehpou.com/]mgpltdmehpou[/link], http://wfwmdomlhaas.com/

334 :NAME IS NULL:2007/11/12(月) 16:24:23 ID:???
ユニコードの対応って4.1からだったのね。
それ以前のバージョンは本当に糞だな

335 :NAME IS NULL:2007/11/13(火) 00:07:16 ID:???
質問させてください。datetime型やdate型のカラムを含むテーブルの更新は
どうしたらいいんですか?
create table nametable (
  namae varchar(30),
  tourokubi date
);
上記のようにして作ったテーブルにデータを入れるとき、
insert nametable values("yamada", ?);
?の部分をどうしたらいいのかわかりません。 
ためしに2000-10-10を入れたらエラーになり、20-10-10を入れたら
0000-00-00が登録されました。 アドバイスどなたかお願いします。
マニュアルも読んだんですが良くわかりませんでした。

336 :NAME IS NULL:2007/11/13(火) 00:08:22 ID:3kQWoYfz
あ、すみません あげさせてもらいます

337 :NAME IS NULL:2007/11/13(火) 02:04:05 ID:???
insert into nametable values ('yamada','2000-10-10');
insert into nametable values ('suzuki','2001-11-11');
insert into nametable values ('satou', '2002-12-12');

select * from nametable;
+--------+------------+
| namae  | tourokubi   |
+--------+------------+
| yamada | 2000-10-10  |
| suzuki  | 2001-11-11  |
| satou   | 2002-12-12  |
+--------+------------+
3 rows in set (0.00 sec)

問題ナス

338 :LdbDyhTGoUYCcmEFi:2007/11/13(火) 02:45:46 ID:???
Zq5NGz <a href="http://nuawugytijbm.com/">nuawugytijbm</a>, [url=http://mdwilqiupmwu.com/]mdwilqiupmwu[/url], [link=http://temytddeiypd.com/]temytddeiypd[/link], http://pvnazjgozclx.com/

339 :NAME IS NULL:2007/11/13(火) 04:36:27 ID:???
>>337
ありがとう '2002-12-12'というふうに、クオーテーションでくくってませんでした
解決しました

340 :ImjZRDaHx:2007/11/14(水) 03:33:12 ID:???
c6uT8r <a href="http://phvtguriopjb.com/">phvtguriopjb</a>, [url=http://ugkiayubbqsd.com/]ugkiayubbqsd[/url], [link=http://ewwtjidjgvjy.com/]ewwtjidjgvjy[/link], http://bvhgpkicasvb.com/

341 :NAME IS NULL:2007/11/14(水) 10:14:45 ID:fJXBbwnJ
今インストールするのに最適なバージョンって何ですか?
そろそろ5も枯れてきているのでしょうか?

342 :NAME IS NULL:2007/11/14(水) 11:28:10 ID:???
今なら5.0でしょ。場合によっては5.1でもいいかもよ。

5.0はかなり前から十分に枯れてるというか、
古いバージョンを使う理由は基本的にはないよ。

343 :NAME IS NULL:2007/11/15(木) 02:06:02 ID:XFrdNKef
t1とt2のテーブルに共通するIDを削除したいと思います。

DELETE FROM t1 INNER JOIN t2 ON t1.id=t2.id WHERE t1.id='test'

として、t1とt2を結合し、同じidのtestを削除しようとしたのですが、削除出来ません。
リファレンスを見ると、JOINは使えるとのことなので上記のようにしていますが、
どこがおかしいのでしょうか?ご指摘・アドバイスいただければと思います。

344 :NAME IS NULL:2007/11/15(木) 03:27:54 ID:???
>>342
ありがとうございました
4.1文字化け問題の記憶があって
何か新しいものへの抵抗があるんですよね…

345 :NAME IS NULL:2007/11/15(木) 04:19:43 ID:???
>>343

誤り
mysql> delete from t1 inner join t2 on t1.c1=2 where t1.c2=t2.c2;
ERROR 1064 (42000): You have an error in your SQL syntax; …

正解
mysql> delete t1, t2 from t1 inner join t2 on t1.c1=2 where t1.c2=t2.c2;
Query OK, 2 rows affected (0.00 sec)

変な構文

346 :NAME IS NULL:2007/11/15(木) 04:21:30 ID:???
ごめん間違えた

mysql> delete t1, t2 from t1 inner join t2 on t1.c2=t2.c2 where t1.c2=2;
Query OK, 2 rows affected (0.00 sec)


347 :NAME IS NULL:2007/11/15(木) 06:41:58 ID:???
>>344
それは老化だよ

348 :NAME IS NULL:2007/11/15(木) 11:10:51 ID:???
>>344
文字化けはMySQLが枯れてるかどうかの問題じゃない、ってのは分かってる?
単に3.xの時と同じ運用だと問題が起こっていた(ノウハウが溜まっていなかった)、という話。
ノウハウについてはかなり前から充分溜まってる。

ちなみに4.1を使う理由は全くないので、4.1を検討するくらいなら5.0以降を使うべき。
未だに4.0以前の知識しかない人を見かけるけど、なぜなんでしょ。
MyNAのFAQにもずいぶん前からいろいろあるのに……。啓蒙不足?
それとも書籍が腐ってるせいかねぇ。PHPと一緒なやつとかは相変わらず酷いんでしょうか。

349 :NAME IS NULL:2007/11/15(木) 12:01:08 ID:???
>>345-346
ありがとうございます!出来ました。
deleteの後ろに削除するテーブルを指定するんですね。

350 :NAME IS NULL:2007/11/15(木) 23:05:26 ID:???
>>348
4.1初期のバグやら仕様ミスを知らない?
落ち着いたのは4.1.12以降だろ。
あれを経験していれば、安易に版数変えたく無いわな。


351 :NAME IS NULL:2007/11/16(金) 00:35:13 ID:???
は?
あれを経験しているからこそさっさとかえるべきだろ?

352 :NAME IS NULL:2007/11/16(金) 00:59:28 ID:???
>>351
まあ判っているとは思えないな。w

353 :NAME IS NULL:2007/11/16(金) 01:17:37 ID:???
2007年に入ってから1回しかupdateしてない4.1系列よりは
ほぼMonthlyでupdateされてる5.0系列の方がいいと思うよ。

5.0はEnterpriseでサブスクリプション契約になったから
それだけ品質には気を使うようになってる。

B.1.1. Changes in MySQL 4.1.24 (Not yet released)
B.1.2. Changes in MySQL 4.1.23 (12 June 2007)

C.1.1. Release Notes for MySQL Enterprise 5.0.52 [MRU] (Not yet released)
C.1.2. Release Notes for MySQL Enterprise 5.0.50 [MRU] (19 Oct 2007)
C.1.3. Release Notes for MySQL Enterprise 5.0.48 [MRU] (27 August 2007)
C.1.4. Release Notes for MySQL Enterprise 5.0.46 [MRU] (13 July 2007)
C.1.6. Release Notes for MySQL Enterprise 5.0.44 [MRU] (21 June 2007)
C.1.7. Release Notes for MySQL Enterprise 5.0.42 [MRU] (23 May 2007)
C.1.8. Release Notes for MySQL Enterprise 5.0.40 [MRU] (17 April 2007)
C.1.9. Release Notes for MySQL Enterprise 5.0.38 [MRU] (20 March 2007)
C.1.11. Release Notes for MySQL Enterprise 5.0.36 [MRU] (20 February 2007)
C.1.12. Release Notes for MySQL Enterprise 5.0.34 [MRU] (17 January 2007)


354 :NAME IS NULL:2007/11/16(金) 11:07:42 ID:???
>>350
いや知ってるが文字コード云々言ってる連中の大半は3.xあたりの知識のままで
運用しようとしてるだけでしょ。
(つか当時のことを知っていれば「いまどのバージョンが安定してる?」なんて聞き方はしない)

まあエンコディング周りは鬼門だからなぁ。
サロゲートペア対応してないのが問題っていうならその通りだし、
将来対応したときに問題が起こりうるってのはそうだと思うけど。


355 :NAME IS NULL:2007/11/16(金) 13:24:09 ID:???
>>353
裏返せばそれだけ安定していないって事だけどなw


356 :NAME IS NULL:2007/11/16(金) 18:43:14 ID:???
>>355

その通り安定してないんだけど、それは4.1もいっしょだよ。
新機能でない限りほどんどのバグが4.1、5.0、5.1で共通。
5.0 Enterpriseならバグ報告すれば翌月直るけど、5.0 Community、
4.1は同じバグが長期間放置される。だから5.0 Enterpriseオススメ。

MySQL ABはEnterpriseのパッケージを契約顧客にしか配ってないけど、
結局GPLなんでミラーされてしまっている。
http://mirror.provenscaling.com/mysql/


357 :NAME IS NULL:2007/11/16(金) 22:46:25 ID:???
で、結局開発する時はどの環境が無難なの?
自分は昔から4.0.26だけど。

358 :NAME IS NULL:2007/11/16(金) 23:41:28 ID:???
stableは5.0なので、それの最新でいいでしょ。
場合によっては5.1でもいいんじゃね?


359 :NAME IS NULL:2007/11/17(土) 08:48:17 ID:XVlaU+5c
以下のSQL文をphpから実行しようとするとエラーになって画面が白くなります
テーブルの指定やカラム数、並びともに間違ってないのでどこがおかしいのかわかりません
誰かご意見ください お願いします
$sql = "insert into testtable values(
0,
$_SESSION['loginId'],
$_SESSION['loginPass'],
1,
$_SESSION['staffName'],
$_SESSION['sType'],
$_SESSION['name1'],
$_SESSION['name2']
);

360 :359:2007/11/17(土) 09:02:46 ID:XVlaU+5c
あ、ごめんなさい
); となってますが、)"; の書き間違いです またDBへの接続はうまくいっています

また、 $sql = "insert into testtable (id,loginId) values(0,"abc"); というSQL文は
ちゃんと動作しました

361 :NAME IS NULL:2007/11/17(土) 09:12:36 ID:???
>>359
各値がクォーテーションで囲まれていないからでは?

362 :NAME IS NULL:2007/11/17(土) 09:36:55 ID:???
$sql をダンプしてみりゃ一発ではないか

363 :NAME IS NULL:2007/11/17(土) 12:24:46 ID:???
文字列を長さ順でソートしようと考えています。
varchar に対して length(), char_length() を行うとして、
length()の場合は、文字列と一緒に格納されいているバイト数を返すだけだから高速
char_length()の場合は、マルチバイトを考慮して文字数を数えるので低速
という認識なのですがあっていますかね?

364 :NAME IS NULL:2007/11/17(土) 15:25:14 ID:???
>>363
多分あってるけど実測した結果を見たことは無いな。
適当に数十万レコードくらいでっちあげて試験してみたら?
レポート楽しみに待ってます。

365 :NAME IS NULL:2007/11/17(土) 15:46:36 ID:???
>>359

$sql = "insert into testtable values(
0,
{$_SESSION['loginId']},
{$_SESSION['loginPass']},
1,
{$_SESSION['staffName']},
{$_SESSION['sType']},
{$_SESSION['name1']},
{$_SESSION['name2']}
);

つか、MySQLじゃなくてPHPの文法エラーな

366 :PFPfSPoWxWorN:2007/11/17(土) 22:29:08 ID:???
Hi! Nice site! <a href=http://dthqlr.cn/beer/ >hi </a> [URL=http://dthqlr.cn/beer/ ] guys [/URL] http://dthqlr.cn/beer/

367 :363:2007/11/17(土) 23:58:29 ID:???
>>364
確かにやってみれば済むことですね。
今度やってみて結果書きますね。

368 :NAME IS NULL:2007/11/18(日) 10:21:12 ID:???
MySQL4.0のサポートっていつまで?
今年いっぱい?

369 :NAME IS NULL:2007/11/18(日) 22:51:32 ID:???
5.1からmyisamのデータアクセスにmmap使うオプションがあるので、
巨大なデータファイルを扱うなら5.1はかなりいいぞ。

はやくfalconでないかな。

370 :BvCrZSkVPu:2007/11/19(月) 12:36:49 ID:???
Hi! Nice site! <a href=http://ozzyosbournemusic.blogspot.com/ >hi </a> [URL=http://ozzyosbournemusic.blogspot.com/ ] lol wut???[/URL] http://ozzyosbournemusic.blogspot.com/


371 :NAME IS NULL:2007/11/19(月) 14:14:57 ID:pgXAP1I1
AUTO_INCREMENTでIDを自動挿入しているんですが、
あるカラムをdeleteしたらそこの番号が空白になりますよね?
一覧表示したときにIDも表示してると歯抜けになって格好悪いのですが、
IDを詰めることはできませんか?
それとも気にするべきではありませんか?

372 :NAME IS NULL:2007/11/19(月) 14:29:05 ID:???
気にするべきでない
ID詰めるのはちまちまupdateすりゃできるけど
他のテーブルの外部キーになっていればそれも無理

373 :NAME IS NULL:2007/11/19(月) 14:36:15 ID:???
削除されたものも含めて「一意」なんだ、と思うべき。
番号表示を気にしたいなら別のカラムでも作れ。


374 :NAME IS NULL:2007/11/19(月) 21:46:59 ID:tlX6K+Wh
一度に大量(100や200)のクエリを実行したとして
速度的な影響って出ますか?

某所で「何度も実行するべきではない」っと聞いたので
気になっているのですが、調べる術がありません。。

375 :NAME IS NULL:2007/11/19(月) 22:24:19 ID:???
そら少ないより多いほうが影響するでしょ。
それにクエリの内容によって影響も変わる。

例えばprimary keyによるSELECTを大量に発行してもたいしたことないし、
1回のクエリで途方もない時間がかかる可能性もあるし。

更新系のクエリかどうかによっても違うし。

つかやってみれば分かるでしょ。

376 :374:2007/11/20(火) 00:59:42 ID:???
>>375
ありがとうございます。とりあえずWHEREによるSELECTをしました。
元データ1万件に対してWHEREで対象となるキーを抽出してSELECT。
これをPHPを使い、50回・100回と繰り返し処理をさせました。

ローカル環境でやりましたが、特に体感速度は変わりません。
これ以上の条件でやった場合はどうなるかわかりませんが、
サーバダウンするほどでもないので、気にすること無いですね。

377 :NAME IS NULL:2007/11/20(火) 10:50:13 ID:???
きっと query cacheとか buffer sizeとか、explainなんて気にしないでパフォーマンスチェックしてるんだろうな。

378 :NAME IS NULL:2007/11/20(火) 12:32:08 ID:???
1プロセスで繰り返し実行しても分からんでしょ。
20個ぐらい多重かけないと。

379 :NAME IS NULL:2007/11/20(火) 15:27:11 ID:???
>>377
query cacheとか buffer sizeとかは気にすべきなの?

380 :NAME IS NULL:2007/11/20(火) 18:21:33 ID:???
InnoDBからMyISAMに変換するにはどうすればいいでしょうか?
MyISAMからのInnoDBへはダメとは書いていましたが、

変換しなくても、mysqlダンプしてから、
InnoDBをMyISAMにして、リストアすればいいのでしょうか?

この場合、InnoDBで使っていたゴミはどこかに残っているのでしょうか?

381 :NAME IS NULL:2007/11/20(火) 19:11:50 ID:???
ダンプしてdatabase作り直してリストアだろうね。
ところでゴミって例えばどんな?

382 :NAME IS NULL:2007/11/20(火) 19:39:01 ID:???
alter table foo type=myisam;
じゃだめなの?

383 :NAME IS NULL:2007/11/20(火) 19:53:50 ID:???
alter table t engine=MyISAM

じゃだめなのかね?


384 :380:2007/11/20(火) 20:24:55 ID:???
ダンプして、テーブルを全部削除して、
テーブルのengineとdefault charsetを目的の値にしてから、
インポートしました。by phpmyadmin

ゴミというのは、
/var/lib/mysqlにある、

ib_logfile0
ib_logfile1
ibdata

です、これはInnoDBを使ってなければ不要なのでしょうか?

alterコマンドというのがあるんですね、
勉強になります、ありがとうございました。

385 :rPCNKKOGk:2007/11/20(火) 21:32:04 ID:???
bYY6fE <a href="http://rpggmtkxhdkm.com/">rpggmtkxhdkm</a>, [url=http://karvpocaoycb.com/]karvpocaoycb[/url], [link=http://wnhrbtrhtibf.com/]wnhrbtrhtibf[/link], http://yisqierftazu.com/

386 :UwuAdnimP:2007/11/20(火) 21:37:13 ID:???
9aTefE <a href="http://kbeddzwnowhh.com/">kbeddzwnowhh</a>, [url=http://ozgwbcnkrzhq.com/]ozgwbcnkrzhq[/url], [link=http://cvvcnxrwrcij.com/]cvvcnxrwrcij[/link], http://eswjtgnpbecy.com/

387 :ETKZBETklTBU:2007/11/20(火) 21:37:51 ID:???
LMLHSf <a href="http://nqozcaxavxlj.com/">nqozcaxavxlj</a>, [url=http://zrgempvehxsb.com/]zrgempvehxsb[/url], [link=http://wxcyjqzvfage.com/]wxcyjqzvfage[/link], http://qivlxpxtvocg.com/

388 :QbZbkpjqiWEcVPyQSP:2007/11/20(火) 21:55:09 ID:???
UHdzTz <a href="http://rgtmsxtzhmrj.com/">rgtmsxtzhmrj</a>, [url=http://dbliloqnljmk.com/]dbliloqnljmk[/url], [link=http://gyabhkseriwi.com/]gyabhkseriwi[/link], http://dxnduoaksfnm.com/

389 :gAbBDHtiBWXT:2007/11/20(火) 21:56:20 ID:???
1PdgbK <a href="http://rrnhflljxwoy.com/">rrnhflljxwoy</a>, [url=http://jjmupzdjecfv.com/]jjmupzdjecfv[/url], [link=http://yqgknoqilafb.com/]yqgknoqilafb[/link], http://mkhyknodbcxd.com/

390 :NAME IS NULL:2007/11/20(火) 23:00:07 ID:???
MySQLの4.1.15です。

例えば
uriageテーブルが
uriageYMD date,
ordernum int(4),
mise int(3),
kyaku int(5),
shouhinID int(5),
kingaku int(8)

kokyakuテーブルが
mise int(3),
kyaku int(5),
kyakumei varchar(20),
kakari int(4)

salseテーブルが
mise int(3),
kakari int(4),
kakarimei varchar(20)

とあって、
uriageテーブルからmise,kyaku,uriageYMD,
kokyakuテーブルから kyakuに一致するkyakumei,kakari
を持ってくるまでは出来たのですが、それにsalseテーブル
からkokyakuテーブルのkakariに一致するkakarimeiを
持ってくるにはどうすれば良いんでしょうか?


391 :NAME IS NULL:2007/11/20(火) 23:52:43 ID:???
すさまじくダサいテーブル名/カラム名だな。
1. ordernum(英語)とmise(ローマ字)が混じってる
2. kokyakuテーブルのPRIMARY KEY(と思われるもの)がkyaku。普通はkokyaku側はid、uriage側はkokyaku_id。
3. salseじゃなくてsales
ってのが。
ダメSIの臭いがプンプンするぜ。

SELECT u.mise, u.kyaku, u.uriageYMD, k.kyakumei, k.kakari, s.kakarimei FROM uriage u INNER JOIN kokyaku k ON k.kyaku = u.kyaku INNER JOIN salse s ON k.kakari = s.kakari;

392 :NAME IS NULL:2007/11/21(水) 00:03:54 ID:???
>>390
sirimasen

393 :NAME IS NULL:2007/11/21(水) 00:04:51 ID:???
まぁあくまでもここに例に出す為に即興で作った名前ですから… w

何はともあれ、m(__)m です。 w

394 :391:2007/11/21(水) 01:01:47 ID:???
>>393
即興でこれかよ!
そっちの方がやべーYO!

395 :NAME IS NULL:2007/11/21(水) 02:05:40 ID:H0U/ijnh
1万件のテーブルを正規化して計3テーブルを
LEFT JOINで結合しているのですが、物凄く重いです。
ローカル環境で動作確認していますが、PCがダウンします。
やはり、件数が多いからサーバダウンするのでしょうか?
それとも、MySQLのチューニングが上手く行ってないのでしょうか?

インデックスの調節やEXPLAINをして確認しましたが、
Using filesortとUsing temporary が常に出ます。

サーバはWindowsXPでMySQL4.0.20で確認しています。


396 :NAME IS NULL:2007/11/21(水) 04:29:23 ID:???
AccessからMySQL(charsetはUTF-8)にODBC接続したんですけど
日本語が化けたり化けなかったりします

397 :NAME IS NULL:2007/11/21(水) 04:32:44 ID:88wrK5LA
>397

>MySQL4.0.20

捨てろ

398 :NAME IS NULL:2007/11/21(水) 09:16:19 ID:???
たかが1万件ごときでそんなに重くなるはずがない。
インデックスの付け方が悪い。show create tableさらせ。
あと397の言うとおり、4.0.20は捨てろ。

399 :NAME IS NULL:2007/11/21(水) 10:23:16 ID:???

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

    【 あなたのタイピングどのくらい!? 】              2007/11/21 配信

 制限時間内に表示される画像内の、数字やアルファベットを次々とタイプ入力していく。
あなたのタイプ成功率が刻々と表示されていく。また、その時々のランキングにも表示さ
れていく。都道府県別のランキングもあれば、それぞれ友達と好きなチームを作り競い
合うチーム別ランキングもあって楽しめれる!

 また、タイプが成功したものはそのまま、「 国別対抗オンラインクリックゲーム 」の日本
チームのクリック数に貢献される。数々の激戦を戦い抜いてきた日本チームも、現在は
強敵ハンガリーチームに続いて第2位となっている。タイプの練習がそのまま日本チー
ムの優勝に貢献するかも!?あなたもぜひやってみては?

参加するには各種のツールを使う方法もあるが、まずはアクセスするだけでサイトから
簡単にできる「 小町 」をお試しください。なれてきたら各種ツールを試すのも楽しい。

タイプ入力サイトその1「 小町 」
  http://f106.dyndns.org/komachi/cgi/acsupporter/supporter.cgi?m=ff

「 国別対抗オンラインクリックゲーム 」については、日本チームのオフィシャルサイトで。
  http://clickjapan.jp/

  ※上記サイトはすべて「 国別対抗オンラインクリックゲーム 」日本チームの有志の
    方達の運営で、すべて無料です。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


400 :NAME IS NULL:2007/11/21(水) 11:36:47 ID:???
4.0系から4.1系に変えたら、劇的に早くなるのでしょうか?

401 :NAME IS NULL:2007/11/21(水) 11:39:25 ID:???
>>356
で、そのEnterpriseなVersionの正式にライセンス契約してない貧乏泥棒ユーザーが、
本家にBugReport送るのってありですか?

402 :395:2007/11/21(水) 12:05:39 ID:???
>>398
テーブル構成は住所録+沿線情報になりまして、
aテーブルには基本情報(user_id、pref、address)
bテーブルには会員の駅情報(user_id、ensen_id、station_id)
cテーブルには参照する駅情報(ensen、ensen_id、station、station_id)

こういう構成です。()内はフィールド名です。各1万件あります。
SELECT * FROM a LEFT JOIN b ON a.user_id=b.user_id
LEFT JOIN c ON b.station_id=c.station_id

みたいなSQLで結合しているのですが、これが非常に重いです。
インデックスは各idごとに付けています。

MySQLのバージョンは会社では4.0.20なので、合わせています。
だからすぐに捨てることは出来ないので、それが問題です。

403 :NAME IS NULL:2007/11/21(水) 12:40:35 ID:???
>>402
explainした?

404 :NAME IS NULL:2007/11/21(水) 12:45:10 ID:???
>>395

405 :NAME IS NULL:2007/11/21(水) 13:17:45 ID:???
>>402
そのSQLとexplainの結果をそのまま貼り付けよー
結合しているせいじゃない気がするよ


406 :NAME IS NULL:2007/11/21(水) 15:49:36 ID:88wrK5LA
SELECT * FROM a LEFT JOIN
(b LEFT JOIN c ON b.station_id=c.station_id)
ON a.user_id=b.user_id

407 :NAME IS NULL:2007/11/21(水) 16:01:19 ID:???
権限テーブルについて質問です。

したいこと -->
'hoge'と言う、root権限から、grant と mysqlデータベースについてのアクセス権のみ省いたUserを作成したい。
ちなみに、この’hoge’は、LAN内からののみアクセス可能とする(192.168.0.%)

やったこと -->
rootでloginして、
grant all on *.* to 'hoge'@'192.168.0.%' identifed by '******';
とやって、こんなUserができた。

select * from mysql.user where user = 'hoge'

Host: 192.168.0.%
User: hoge
Password: ******
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0

408 :つづき:2007/11/21(水) 16:01:51 ID:???
で、一旦quitしてから、’hoge’で再loginしてから、
show databases; や select * from mysql.user; するとmysqlデータベースの中身が参照できる(あたりまえ。)

ここまではいいとして、ここから、再度rootでloginしなおして、

revoke all on mysql.* from 'hoge'@'192.168.0.%';
とやってみたら、こんなError
ERROR 1141 (42000): There is no such grant defined for user 'hoge' on host '192.168.0.%'

そりゃあhogeにはgrant option与えてないけど、なんで? Revokeの使い方間違ってる?

そこで、

Insert into mysql.db Values('192.168.0.%','mysql','hoge','N','N'・・・'N');
でmysql.dbテーブルに直接インサートしてみた。

select * from mysql.db where user = 'hoge':
Host: 192.168.0.%
Db: mysql
User: hoge
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N

となったので、flush privileges をかけて、rootはlogout。再びhogeでログイン。
そこで、show databases や show tables from mysql をしたら、中が読めてしまう。
MySQL Serverを再起動掛けて見てもやっぱり同じ。
(これでmysql.*が読めないようにすることが目的)

これってやっぱり、最初のgrantの時に、一つ一つDbを明示して権限を与えないとダメですか。
出来れば、既存の権限から、特定のDbだけ除外したい。

実のことを言うと、BackUp用に、他のマシンから各Db、Tableの内容をdumpしたいんだけど、
例えば本番マシン内で、新たにDbが作成されたりした時に、いちいちlocalコンソールからloginして、
増えたDbの分だけgrantしたり、消去されたDbについてRevorkeしたりすんのが煩雑なのと、
DBをフルダンプした時に、mysqlデータベース内の権限テーブルまで吐いてしまうのを回避したい。

409 :NAME IS NULL:2007/11/21(水) 16:36:37 ID:???
>>401

バグだって切り分けができてるなら
http://bugs.mysql.com/ へのレポートしてOK。
Enterpriseのソースはbitkeeperにも置いてあるから、
別に入手元は問われないよ。
対応はベストエフォートだけど、これはしょうがない。

契約顧客は専用のサポートサイトがあって、
そちらにレポートするときちんと担当者がアサインされて
障害の切り分けから直すところまでつきあってくれる。


410 :NAME IS NULL:2007/11/21(水) 16:52:40 ID:???
>>407
なげーよ。

411 :409:2007/11/21(水) 16:52:48 ID:???
BitKeeperはこちら。
http://mysql.bkbits.net/

ちなみに、しつこくバグレポートしてると、
そのうちMySQL Quality Contributorとして認定してくれます。
MySQL Quality Contributorになると
MySQL Enterpriseのライセンスがタダでもらえます。


412 :NAME IS NULL:2007/11/21(水) 17:10:19 ID:???
Revokeの使い方間違ってる

413 :NAME IS NULL:2007/11/21(水) 17:18:33 ID:???
>>407
grant usage on mysql.* to 'hoge'@'192.168.0.%' identifed by '******';
grant all on *.* to 'hoge'@'192.168.0.%';


414 :NAME IS NULL:2007/11/21(水) 17:28:41 ID:???
mysqld の起動時、すべての権限がメモリに読み込まれます。
データベース権限、テーブル権限、およびカラム権限はすぐに反映されますが、
ユーザレベルの権限はユーザが次回接続したときに有効となります。
GRANT または REVOKE によって行われた権限テーブルへの変更については、サーバは即座に認識します。
INSERT、UPDATE などを使って手動で権限テーブルを変更した場合、
FLUSH PRIVILEGES ステートメントまたは mysqladmin flush-privileges を実行して
サーバに権限テーブルを再読み込みさせる必要があります。
See 項4.4.3. 「権限の変更はいつ反映されるか」。

415 :NAME IS NULL:2007/11/21(水) 18:00:46 ID:???
>>406 >>407
権限テーブルについて自分の理解してるところを書くよ。間違ってたらごめん

> grant all on *.* to 'hoge'@'192.168.0.%' identifed by '******';
ここで設定した権限(グローバルレベルの権限)は mysql.user に記述される。
ここまではいいとして、

> revoke all on mysql.* from 'hoge'@'192.168.0.%';
ここでは設定していないデータベースレベルの権限( mysql.db に記述される)を剥奪しようとしている。
だから
> ERROR 1141 (42000): There is no such grant defined for user 'hoge' ...
となる。これは grant all on *.* した時点で mysql.db を覗いてみればわかる。

肝心なのは MySQL が各ユーザの権限を算出するにあたって
mysql.user, mysql.db などの記述を短絡的にチェックしているということ。
もし mysql.user をチェックして、そのユーザの権限に関する記述があれば( Y なら)
mysql.db 以降はチェックされない。

> これってやっぱり、最初のgrantの時に、一つ一つDbを明示して権限を与えないとダメですか。
そうするのがいいと思うけど、mysql.db を直接いじって flush すればいけると思う。
その辺は詳しい人のレスを待ったほうがいいかと。

416 :NAME IS NULL:2007/11/21(水) 18:01:30 ID:???
ごめんアンカミス。>>407, >>408

417 :407,408:2007/11/21(水) 19:46:21 ID:???
いろいろとレスサンクス。

>>414
上にも書いてあると思うけど、flush privilegesは何回もしてる。
mysqldの再起動もやった。

>>412,415
Revorkの使い方間違ってるのは理解した。
(ってか今までは、ほとんど delete from mysql.user where user='***' で一旦削除してから、あらたにgrantしてた。)

>>413
上の行のクエリで、mysql.userの*_privが全部'N'のhogeができあがった。
でも、そこから下の行のクエリを書けたら、*_privが全部(grant_priv以外)’Y’になった。
で、flush privileges(念のため)を掛けてから、hogeで再ログインして、
show databases と show tables from mysql でやっぱりmysql.の中身が読めてしまう。

ちなみに、この時(上の行の前、後、下の行の後のいつでも)
select * from mysql.db where user='hoge'; で Enpty set が返ってくる(つまりHitなし)
select * from mysql.db where db='mysql'でも Enpty set。

ちなみに、grant all on my_db1.* to 'piyo'@'192.168.%' identifed by '******'; で作ったUserでloginして
show databases; したら、ちゃんと infomation_schemaとmy_db1しか表示されないし、
show tables from mysql; だと、Access denied for user 'piyo'.... となる(期待した動作)
select * from mysql.db where user='piyo' で、db権限テーブルには’piyo’がちゃんと登録されてる。

う〜ん、デフォルトが’Y’で指定したのみ’N’ってのは、できないのかなあ〜。

418 :395:2007/11/21(水) 20:09:50 ID:???
>>405
とりあえず、EXPLAINは以下の通りです。
長いですけど、絶えずUsing index; Using temporary; Using filesortが出ます。

Array ( [0] => a [table] => a [1] => index [type] => index [2] => [possible_keys] => [3] => PRIMARY [key] => PRIMARY
[4] => 4 [key_len] => 4 [5] => [ref] => [6] => 20292 [rows] => 20292
[7] => Using index; Using temporary; Using filesort [Extra] => Using index; Using temporary; Using filesort )
Array ( [0] => b [table] => b [1] => ALL [type] => ALL [2] => user_id [possible_keys] => user_id
[3] => [key] => [4] => [key_len] => [5] => [ref] => [6] => 4 [rows] => 4 [7] => [Extra] => )
Array ( [0] => c [table] => c [1] => ref [type] => ref [2] => station_id [possible_keys] => station_id
[3] => station_id [key] => station_id [4] => 4 [key_len] => 4 [5] => b.station_id [ref] => b.station_id
[6] => 1 [rows] => 1 [7] => [Extra] => )

419 :NAME IS NULL:2007/11/21(水) 20:35:32 ID:???
オレって実際には全カラムは必要ない時にも select * でクエリしちゃったりする。
一般的にこれってやっぱ無駄というか、パフォーマンスに影響するのかな。
簡単なテストでは大差なかった。
テーブルの型やドライバとかに影響しそうだけど、10個中9個取るときも必要な
カラムを羅列すべきだと思う?

420 :NAME IS NULL:2007/11/21(水) 20:43:16 ID:???
インデックスが作ってあって、そのインデックスの列だけSELECTする場合、

SELECT * ⇒ インデックスとテーブルにアクセスする
SELECT [必要な列のみ] ⇒ インデックスのみアクセスする

となるので性能にずいぶん影響が出るよ。

あとは通信量が違う

421 :NAME IS NULL:2007/11/21(水) 21:52:53 ID:???
>>419
羅列するべき。 メリットなんてSQLで手抜ける ってぐらいじゃない。
デバッグ時は * で開発進める場合もあるけど、必ず仕上げ段階で
カラムを絞りますよ。

422 :419:2007/11/21(水) 22:26:02 ID:4Hr0oFqs
>>420
>>421
ありがと。これからはちゃんと羅列するようにしまっす。

423 :NAME IS NULL:2007/11/21(水) 23:12:08 ID:???
>>418
これは何かの嫌がらせか……
人間が読める形にしてよ。


424 :NAME IS NULL:2007/11/21(水) 23:54:00 ID:???
select hoge1.fuga, hoge1.hage, hoge2.fuga, hoge2.hage
from hoge as hoge1 left join hoge as hoge2 on hoge2.fuga = hoge1.fuga
みたいなことってよくする?


425 :NAME IS NULL:2007/11/22(木) 00:44:25 ID:???
left join意味なくね?
fuga列同士の比較だから、片方だけnullってケースにならない

426 :407,408:2007/11/22(木) 04:21:02 ID:???
>>レスくれた方々
色々なヒントをありがとう。

たぶんできた。

grant usage on *.* to 'hoge'@'192,168.0.%' identified by '******';
これで、mysql.userに*_privが全NのUserができる。この時点で、まだmysql.dbにはなにも追加されてない。

Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
これで、mysql.dbにUser:hoge,db:mysql,*_priv:Nのレコードが追加される。

Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');
これで、mysql.dbにUser:hoge,db:%,*_priv:Yのレコードが追加される。(つまりUser:hogeのレコードが二件存在する)

すかさず、flush privilegesで権限テーブルをflushして、hogeで再ログインすると・・・、

ついに期待通りの動作確認!!。
show databases;でmysql以外のDbが一覧で返ってきて、show tables from mysqlだと、Access denied。
とにかくhogeからはmysql Dbが完全に遮断できた。
この時に、別のターミナルからログインして、新しくDbやTableを作成しても、すかさずhoge側から参照可能。

Manualの4章あたりを何度も読み返して、なんとなくだけど接続、参照時の権限のイメージみたいなが見えてきた。
>>415さんの言ってるように、最初の接続時にmysql.userテーブルを読んで、そこでアクセス権があれば
それをセットする(グローバル設定)。なければそれぞれのDb権限を読みに行って、Dbごと(あるいはTable、columnsごとに)
権限を制御している模様。

で、Db名を明示してgrantしたUserのmysql.userを覗いてみると、なんと全てのprivが’N’になってんで、もしやと思ってやってみた。
実は今までこれ知らなかった。

ManualにはUser名にはワイルドカード使えないとは書いていたけど、その他については特に記述なし。
で、ここの少し上の方のレスで、Db名には’%’が使えそうだと思って、放り込んでみたら、できた。
ワイルドカードより、完全一致のほうが強いようだ。
(バージョンや環境によって変わるかも?でも他のやりかたがあるんだったら教えて。自分にはこれ以上思いあたらん)

ちなみに、grant all on *.* to・・・ だと、mysql.userの中身を全てYに変えてしまう。
grant all on `%.*` だとsyntax error。
grant all on `%`.`*` だと Query Ok にはなるけれど、mysql.dbにはなにも追加されない。(mysql.userも変更なし)

結局 Insert into ・・・・で、たくさん’Y’を打ち込まないといけない。(これがVersionによって数が異なる)

期待通りに動作したもの
確認済み・・・4.0.26-Win32、4.0.27-Win32、5.0.37-Win32、5.0.45-Win32、5.0.45(Cent4)、5.0.50(Cent4)
これから確認・・・5.0.50-Win32、5.0.22-rpm(Cent5)、5.0.27-rpm(FC6)
4.1系、5.1系は持ってないから知らない。(これだけやってどれも期待通りに行ったから、多分大丈夫だとは思うけど・・)

とりあえず寝よう。

427 :NAME IS NULL:2007/11/22(木) 05:37:50 ID:???
寝るとこまでは読んだ

428 :NAME IS NULL:2007/11/22(木) 07:33:12 ID:v2xY2Xgx
grant usage on *.* to 'hoge'@'192,168.0.%' identified by '******';
Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');

3行目まちがってないか


429 :NAME IS NULL:2007/11/22(木) 08:14:04 ID:???
>>426
おつ。ただ自分も>>428が気になった。
Host, Db, User はたしかプライマリキーだったと思うので。
できれば「期待通りの動作」をしたバージョンでの
show grants for ... と desc mysql.db を見せてくれるとうれしい。

430 :NAME IS NULL:2007/11/22(木) 08:28:58 ID:v2xY2Xgx
grant usage on *.* to 'hoge'@'192,168.0.%' identified by '******';
Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
Insert into mysql.db Values('192.168.0.%','%','hoge','Y','Y','Y'・・・'Y');

の書き間違いだろうとは思ってるんだけど
一応聞いてみたんだ


431 :NAME IS NULL:2007/11/22(木) 10:40:57 ID:UyA449rO
OR文で「hogehoge」と「テスト」で単語検索をかけたとき
検索した本文からより単語が多い順にORDER BYで並べ替えすることってできますか?

『今日hogehogeしました。』
『hogehoge テスト』
『今日はテストがありました。』
『今日はhogehogeのテストをしました。



『今日はhogehogeのテストをしました。
『hogehoge テスト』
『今日hogehogeしました。』
『今日はテストがありました。』

のように、単語がたくさん当てはまる順に並べたいです。

432 :407,408:2007/11/22(木) 11:34:02 ID:???
ちょっと前まで寝てた。

>>428,429,430
!!!。おっしゃるとおり、三行目は
Insert into mysql.db Values('192.168.%','%','hoge','Y','Y','Y',・・・'Y'); のまちがいでした。
>>426のクエリなら、せっかく’N’にした`mysql`での権限を、’Y’にしてしまう。

で、show grants for 'hoge'@'192.168.0.%;'の結果
GRANT USAGE ON *.* TO 'hoge'@'192.168.0.%' IDENTIFIED BY PASSWORD '******'
GRANT ALL PRIVILEGES ON `%`.* TO 'hoge'@'192.168.0.%'

desc mysql.db; (多分ズレまくりだけどかにんして・・・)
Field        | Type     | Null | Key | Default | Extra
----------------------+---------------+------+-----+---------+------
Host        | char(60)   | NO | PRI | |
Db         | char(64)   | NO | PRI | |
User        | char(16)   | NO | PRI | |
Select_priv    | enum('N','Y') | NO | | N |
Insert_priv    | enum('N','Y') | NO | | N |
Update_priv   | enum('N','Y') | NO | | N |
Delete_priv    | enum('N','Y') | NO | | N |
Create_priv    | enum('N','Y') | NO | | N |
Drop_priv     | enum('N','Y') | NO | | N |
Grant_priv     | enum('N','Y') | NO | | N |
References_priv | enum('N','Y') | NO | | N |
Index_priv     | enum('N','Y') | NO | | N |
Alter_priv     | enum('N','Y') | NO | | N |
Create_tmp_table_priv | enum('N','Y') | NO | | N |
Lock_tables_priv | enum('N','Y') | NO | | N |
Create_view_priv | enum('N','Y') | NO | | N |
Show_view_priv  | enum('N','Y') | NO | | N |
Create_routine_priv | enum('N','Y') | NO | | N |
Alter_routine_priv | enum('N','Y') | NO | | N |
Execute_priv    | enum('N','Y') | NO | | N |

Version 5.0.50-Win32 今試したけど、このVerも期待通りに動いた。
*_privの数が、4.0系で12個、5.0系で17個。多分4.1系、5.1系だとまた違うハズ・・。

433 :NAME IS NULL:2007/11/22(木) 13:50:12 ID:???
『今日hogehogeしました。』
『hogehoge テスト』
『hogehogeをhogehogeするテスト』
『hogehogeをhogehogeしたいんです』
『今日はテストがありました。』
『テストをhogehogeするテスト』
『今日はhogehogeのテストをしました。』

のときの出力結果は?
 

434 :NAME IS NULL:2007/11/22(木) 13:51:29 ID:UyA449rO
>>433
その単語が多い順です

『hogehogeをhogehogeするテスト』
『テストをhogehogeするテスト』
『今日hogehogeしました。』
『hogehoge テスト』
『hogehogeをhogehogeしたいんです』
『今日はテストがありました。』
『今日はhogehogeのテストをしました。』

みたいな感じを希望します

435 :NAME IS NULL:2007/11/22(木) 16:20:19 ID:Npi9B+/0
MySQL5.0で以下のsqlでエラーがでてしまいます。
どこか間違っている書き方がありましたらご指摘ください。
$table = "mytable";
$sql = "update `{$table}` "
. "set (`text1`, `text2`, `text3`) "
. "values "
. "(md5('{$d['pass'}'), '{$d['id']}', '{$d['name']}') "
. "where id = 10;";


436 :NAME IS NULL:2007/11/22(木) 16:27:04 ID:???
スレが違う

437 :NAME IS NULL:2007/11/22(木) 16:29:47 ID:???
update table set text1=hoge1, text2=hoge2, text3=hoge3 where id=10;

じゃないの?

438 :NAME IS NULL:2007/11/22(木) 16:36:26 ID:???
>>437さんのやりかたで正常に動作できました。
updeteではvaluesは使えないみたいですね、残念な思いです。

439 :NAME IS NULL:2007/11/22(木) 17:19:37 ID:???
>>434
できない。

440 :NAME IS NULL:2007/11/22(木) 17:44:11 ID:???
正規表現にしてマッチした回数でソートすれば出来るような気がするんだけど

441 :NAME IS NULL:2007/11/22(木) 18:11:40 ID:???
MySQLで正規表現使えたっけ?

442 :NAME IS NULL:2007/11/22(木) 18:37:22 ID:???
うん

443 :HXsVtIoZaClODEWe:2007/11/22(木) 19:36:13 ID:???
http://ftgmkr.cn classican mp3 downloads

444 :aZxcBftlZ:2007/11/22(木) 22:51:19 ID:???
http://gkinyn.cn mp3 dmusic downloads ipod

445 :NAME IS NULL:2007/11/22(木) 23:00:35 ID:???
>>434
おとなしくSennaとか組み込むべき。


446 :NAME IS NULL:2007/11/23(金) 00:59:01 ID:OYGbXtrw
すみません、質問させてください
not nullを設定してないカラムに値を指定せずinsert文を書いたんですが、登録されません。
insert into table (namae1, namae2) values(1,);  *namae2が問題のカラム
上のような形です。 values(1,1); などとしたら正常に動くんですが、
値をいれずに登録するにはどうしたらいいですか? 
自分でも調べたんですがどうもわからないのでよろしくお願いします

447 :NAME IS NULL:2007/11/23(金) 01:22:20 ID:???
insert into table (name1) values (1)

448 :NAME IS NULL:2007/11/23(金) 02:05:55 ID:OYGbXtrw
>>447
ありがとうございます
やっぱりそういう風に値の入ってるものだけに絞ってインサートするしかないんでしょうか?
そうだとすると各パラメータの値の有無ごとに振り分けが必要になって面倒な気がしますが…

449 :NAME IS NULL:2007/11/23(金) 03:15:05 ID:???
>>448
Insert into table (`namae1`) Valuse('1')
Insert into table (`namae3`,`namae256`) Valuse('konyaga','YamaDa!!')

これが>>446とどうちがうか理解できなければ、Manualを熟読しませう。

450 :449:2007/11/23(金) 03:16:38 ID:???
ごめ、アンカミス
>>446>>447の間違い

451 :449:2007/11/23(金) 03:19:25 ID:???
さらにごめん。いっしょだた。う〜ん寝る

452 :NAME IS NULL:2007/11/23(金) 05:06:51 ID:???
>>449はまだ回答はやいわ。中二病ってやつか? 質問の読解すらできてないじゃない

453 :NAME IS NULL:2007/11/23(金) 06:09:21 ID:???
該当のカラムが null を許容すべきかどうかが重要
許容すべきならプログラムなりSQLなりで工夫する

454 :446:2007/11/23(金) 06:16:11 ID:OYGbXtrw
あー、だめだ わからん、、
>>449-451 ありがとうございます しかし正直、混乱してきました
やはりカラム名-その値のセットで登録しなきゃいけないんでしょうか?
それだとフォームの必須項目以外の処理が面倒すぎるし、、 デフォルト値の
設定がおかしいのかなぁ  どなたかお暇な方ご教授お願いします

455 :NAME IS NULL:2007/11/23(金) 06:22:45 ID:???
webフォームの入力処理はめんどうなんだよ


456 :NAME IS NULL:2007/11/23(金) 07:54:13 ID:???
insert into table values ('hoge1',null);
でええやん

457 :YNGTpqCnKBzITK:2007/11/23(金) 09:45:27 ID:???
http://ipmnew.cn mp3 xxx hardcore sample downloads

458 :NAME IS NULL:2007/11/23(金) 10:49:07 ID:???
あるテーブルの生徒の成績の○と×のデータがあるのですが、
その正解率を計算するのに一回のSQL文で書くことって可能でしょうか?
今は、where文で○のcountと全体のcountを取得するSQL文を2回発行して、
phpで、その○の数÷全体の数で正解率を算出しています。

1回で書く方法がございましたら、ご教授下さい。宜しくお願いします。

459 :NAME IS NULL:2007/11/23(金) 11:08:26 ID:???
>>458
select a.maru / (a.maru + b.peke) from
(select count(*) as maru from table where result='○') a,
(select count(*) as peke from table where result='×') b;

でどうだ

460 :459:2007/11/23(金) 11:13:11 ID:???
select a.maru / b.total from
(select count(*) as maru from table where result='○') a,
(select count(*) as total from table) b;

の方がちょっと早いか

461 :NAME IS NULL:2007/11/23(金) 11:23:52 ID:???
>>459>>460
SQL文って入れ子に出来るんですね。
こんなやり方初めて知りました。
どうもありがとうございました。

462 :tWZYSkVDUmb:2007/11/23(金) 12:14:48 ID:???
http://itdvmb.cn mp3 player downloads

463 :XaMsLqbHC:2007/11/23(金) 19:34:57 ID:???
http://jjajqy.cn/blue-diamond-ventures.htmlBlue diamond ventures</url>
http://jjajqy.cn/why-are-uranus-and-neptune-blue-htm.html Why are uranus and neptune blue htm
http://jjajqy.cn/blue-bay-getaway-hotel-cancun-mexico.html Blue bay getaway hotel cancun mexico
http://jjajqy.cn/black-street-hookers-78-dvd.html Black street hookers 78 dvd
<url>http://jjajqy.cn/blue-berry-lower-cholesterol-htm.html Blue berry lower cholesterol htm

464 :NAME IS NULL:2007/11/23(金) 22:37:48 ID:???
MySQLの4.1.15だけど、テーブル作成時にcheck制約って付けること出来ないんでしたっけ?

465 :NAME IS NULL:2007/11/23(金) 22:49:10 ID:???
ttp://dev.mysql.com/doc/refman/4.1/ja/create-table.html
エラーにはならないけど機能してないっぽい。5.1でも未対応。




466 :NAME IS NULL:2007/11/23(金) 23:01:13 ID:???
>>465
即レス、thx。今日本屋で関連の本立ち読みしてアレ?って思ったんですよ。


467 :NAME IS NULL:2007/11/24(土) 00:20:43 ID:xMeIt7o3
バージョンごとのデータ形式の互換性ってどの程度保たれてるんですか?
たとえば同じmyisamでも、
昔はコレーションとかなかったですが今はあります
その拡張部分はどこを変えることで行われているのでしょう?
MYI,MYDは同じで、frmの属性を増やしていくっていう感じでしょうか

468 :sWpPMfcqKrPzYgVZfT:2007/11/24(土) 00:48:40 ID:???
http://ktmyve.cn/escort-monique-new-york.html Escort monique new york
http://ktmyve.cn/laser-vaginal-rejuvenation-new-york.html Laser vaginal rejuvenation new york
http://ktmyve.cn/fetish-restaurant-new-york.html Fetish restaurant new york
http://ktmyve.cn/pda-cube-x-serial-rubik-pocket-pc.html Pda cube x serial rubik pocket pc
http://ktmyve.cn/ear-piece-for-blackjack-pda.html Ear piece for blackjack pda

469 :UzCslGBvNBcBTMCPB:2007/11/24(土) 04:00:29 ID:???
http://cqiycu.cn/ legal mp3 download

470 :fFuIwXPUcQWmooCECS:2007/11/24(土) 09:31:45 ID:???
http://bdzwbn.cn/gangsta-mp3 gangsta mp3

471 :NAME IS NULL:2007/11/24(土) 10:00:31 ID:???
0 rows affected, 1 warning
って出るsqlがあるんですが、この時実際の warning メッセージはどうすれば見れますか?


472 :NAME IS NULL:2007/11/24(土) 10:33:37 ID:???
show warnings;

473 :ubjKyDJBaYuzCG:2007/11/24(土) 13:28:33 ID:???
http://bdzwbn.cn/mp3 mp3

474 :qzYNJWeoGVesRNdpqI:2007/11/24(土) 13:33:54 ID:???
http://bdzwbn.cn/mp3 mp3

475 :ubAepUFBYytERgcXh:2007/11/24(土) 16:19:41 ID:???
http://bdzwbn.cn/new-mp3 new mp3

476 :IIoSSgMbNe:2007/11/24(土) 17:40:41 ID:???
http://bdzwbn.cn/night-mp3 night mp3

477 :RhgWRXNkjHdqHal:2007/11/25(日) 00:47:09 ID:???
http://bfsnbw.cn/mp34 free memory

478 :NAME IS NULL:2007/11/25(日) 03:21:11 ID:???
なんでこのスレSPAMの餌食になってんだ?

479 :NAME IS NULL:2007/11/25(日) 07:43:03 ID:???
俺の質問にまともに答えずに、茶化したから。

480 :NAME IS NULL:2007/11/25(日) 07:45:53 ID:???
なぜか、DB板の各スレが餌食になっているのだが。

>>479 俺が悪かった。もうやめてくれ。

481 :472:2007/11/25(日) 07:56:53 ID:???
俺ちゃんと答えたじゃないかああああ
うわああああん

482 :NAME IS NULL:2007/11/25(日) 11:58:35 ID:???
>>467
そんな感じだったはず。

483 :NAME IS NULL:2007/11/25(日) 21:43:28 ID:yRCAathj
文書内検索で、次のようなフォーム入力を受け付けるようにしたいと考えてます。
Foo or (Bar and Baz)
Foo、もしくは、BarとBazを含む文書、と考えています。
LIKE検索するとして、こうした優先順をSQL文で表現できるでしょうか?

自分のスキルでは思いつかないので、まずFooとBar and Bazをそれぞれ検索して
検索プログラム側で結果をorで絞り込む、ということでとりあえず書いてるんですが
これですと全体を2回以上検索することになるので・・・

入力例は、例えば「ビデオデッキ」と「ビデオ・デッキ」を両方ヒットさせたいようなときに
「DVDプレーヤー or (ビデオ and デッキ)」のように受け付けたいと思っています

484 :NAME IS NULL:2007/11/25(日) 21:48:38 ID:???
>>480
どっかに穴が開いてるんだと思う


485 :NAME IS NULL:2007/11/25(日) 22:20:32 ID:???
>>483
その条件式のまま、whereにlikeで書けばいいんでない?

486 :NAME IS NULL:2007/11/26(月) 00:21:00 ID:???
>>485
ありがとうございます。
〜WHERE column_name LIKE '%DVDプレーヤー%' OR ('%ビデオ%' AND '%デッキ%') 〜
のように書いてみました。
不勉強なもので、このようなカッコを使った書き方ができるとは知りませんでした・・
尚、マニュアル参照してみますm(_ _)m

487 :NAME IS NULL:2007/11/26(月) 00:35:34 ID:???
ビットテストとかは出来ますか?

488 :NAME IS NULL:2007/11/26(月) 01:22:20 ID:???
.cn/
をNGワードにすればいいよ

489 :NAME IS NULL:2007/11/26(月) 03:14:54 ID:???
>>487
これ?
http://dev.mysql.com/doc/refman/5.1/ja/bit-functions.html


490 :NAME IS NULL:2007/11/26(月) 20:56:37 ID:???
MySQLの文字化け酷い・・・なにこれ

491 :446:2007/11/26(月) 21:08:46 ID:???
>>455-456
ありがとう お礼遅れて申し訳ない
どうにか解決しました サンキューです

492 :NAME IS NULL:2007/11/26(月) 23:47:26 ID:???
>>490は文字コードを理解していないに違いない

493 :NAME IS NULL:2007/11/27(火) 00:47:50 ID:???
つきなみだけど
「文字化け」っていう言葉は本来はbit落ちとかで使うものであって
エンコード間違いのときに使う言葉じゃないんだよね


494 :NAME IS NULL:2007/11/27(火) 10:49:56 ID:???
なんとか金払わずGPL回避して、libmysqlを使う方法はありませんか?

495 :NAME IS NULL:2007/11/27(火) 11:04:01 ID:???
>>494
MySQLをやめて、俺SQLを作ればいいのでは?

496 :NAME IS NULL:2007/11/27(火) 15:45:19 ID:HAXaaf9d
MySQL 5.0.42を使用しているのですが、

以下のようなテーブルを作成し、レコードを登録しておいた場合に、
Where条件として、PRIMARY KEYの3フィールド(field3, field4, field6)をAND条件で指定した時、
SELECTは問題なく行えるのですが、
UPDATEとDELETEが、レコードが存在するにも関わらず、
「Rows matched: 0」と出てしまい、SQLの結果が反映されないのですが、原因とか分かりますでしょうか?

CREATE TABLE table1
( field1 date,
field2 varchar(3),
field3 varchar(11) NOT NULL,
field4 varchar(11) NOT NULL,
field5 bigint UNSIGNED,
field6 char(1) NOT NULL,
CONSTRAINT pk_table1 PRIMARY KEY (field3, field4, field6)) TYPE=InnoDB;


497 :NAME IS NULL:2007/11/27(火) 16:42:30 ID:???
>>494
同じプロトコルで同じ内容をしゃべる/きくようにすれば医院じゃ内科医?

498 :NAME IS NULL:2007/11/27(火) 16:45:13 ID:???
>>494
C++ <-> Python <-> MySQLdb <-> MySQL
こんな wrapper を書いてみたり


499 :NAME IS NULL:2007/11/27(火) 16:52:17 ID:???
>>496
| Warning | 1287 |
 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead |
こんなん出たけど

500 :NAME IS NULL:2007/11/27(火) 17:00:25 ID:???
mysql> select * from tb1 where f3 = '12345678901';
+------------+------+-------------+-------------+----------------------+----+
| f1         | f2   | f3          | f4          | f5                   | f6 |
+------------+------+-------------+-------------+----------------------+----+
| 2007-11-27 | 234  | 12345678901 | 01234567890 | 12345678901234567890 | a  |
| 2007-11-27 | 234  | 12345678901 | 01234567890 | 12345678901234567890 | b  |
| 2007-11-27 | 234  | 12345678901 | 01234567890 | 12345678901234567890 | c  |
| 2007-11-27 | 234  | 12345678901 | 11234567890 | 12345678901234567890 | a  |
| 2007-11-27 | 234  | 12345678901 | 21234567890 | 12345678901234567890 | a  |
+------------+------+-------------+-------------+----------------------+----+
5 rows in set (0.00 sec)
mysql> update tb1 set f6 ='x' where f3 = '12345678901' and f4 = '01234567890' and f6 = 'a';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> delete from tb1 where f3 = '12345678901' and f4 = '01234567890' and f6 = 'x';
Query OK, 1 row affected (0.05 sec)


501 :483:2007/11/27(火) 18:59:37 ID:???
すみません、先日質問させてもらった者です。WHERE節で
WHERE column_name LIKE '%DVDプレーヤー%' OR ('%ビデオ%' AND '%デッキ%')
のように式を書いて、エラーもなく動作したのですが、
その後、この記法についてマニュアルで見つけることができません・・・
ここにそれらしき記法を見つけたんですが(WHERE節の最適化の例のひとつとして)
ttp://dev.mysql.com/doc/refman/5.1/ja/where-optimizations.html

また、手探りで式を変えながら試してみると、
上記の例の場合も、エラーは出ないものの、最初のDVDプレーヤーしか対象になっていないようなんです。

該当のマニュアルページを教えていただけるとありがたいのですが・・

502 :NAME IS NULL:2007/11/27(火) 19:50:41 ID:???
文字コードがあってないんジャマイカ

503 :NAME IS NULL:2007/11/27(火) 19:51:55 ID:???
予想はしていたが
これはひどいw

WHERE column_name LIKE '%DVDプレーヤー%' OR ((column_name LIKE '%ビデオ%') AND (column_name LIKE '%デッキ%'))


504 :NAME IS NULL:2007/11/27(火) 20:12:28 ID:???
>>501
ttp://dev.mysql.com/doc/refman/5.1/ja/string-comparison-functions.html
like は演算子にしか見えないけど、なんで関数になってるんだろ

505 :NAME IS NULL:2007/11/27(火) 20:25:15 ID:???
>>500 なんでだろう・・・・自分のだとこうなる。


mysql> desc table1;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| field1 | date | YES | | NULL | |
| field2 | varchar(3) | YES | | NULL | |
| field3 | varchar(11) | NO | PRI | | |
| field4 | varchar(11) | NO | PRI | | |
| field5 | bigint(20) unsigned | YES | | NULL | |
| field6 | char(1) | NO | PRI | | |
+--------+---------------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

mysql> select * from table1 where field3 = '00000000002' and field4 = '0' and field6 = 'N';
+------------+--------+-------------+--------+--------+--------+
| field1 | field2 | field3 | field4 | field5 | field6 |
+------------+--------+-------------+--------+--------+--------+
| 2007-11-27 | aaa | 00000000002 | 0 | 100 | N |
+------------+--------+-------------+--------+--------+--------+
1 row in set (0.00 sec)

mysql> update table1 set field2 = 'bbb' where field3 = '00000000002' and field4 = '0' and field6 = 'N';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0

mysql> delete from table1 where field3 = '00000000002' and field4 = '0' and field6 = 'N';
Query OK, 0 rows affected (0.00 sec)

506 :483:2007/11/27(火) 20:48:24 ID:???
>>502-504
ありがとうございます。
並列のLIKE検索式に対してカッコを使用するのですね。あうっ・・
今度は結果も確認できました。
案内いただいたページも参考にさせていただきますm(_ _)m


507 :NAME IS NULL:2007/11/27(火) 21:04:52 ID:???
>>494
libmysqlでも何でも使ってDBにアクセスする「サーバ」を作れ。

それに接続するクライアントとしてお前のプログラムを作ればいい。
ソケット越しの連携は何をどうやってもGPLとは関係が無いからな。
そのサーバは公開義務があるけど、別にただのラッパだから
公開しても痛くも痒くもないだろ

508 :NAME IS NULL:2007/11/27(火) 23:17:31 ID:???
>>505
mysql> desc tb1;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| f1    | date                | YES  |     | NULL    |       |
| f2    | varchar(3)          | YES  |     | NULL    |       |
| f3    | varchar(11)         | NO   | PRI |         |       |
| f4    | varchar(11)         | NO   | PRI |         |       |
| f5    | bigint(20) unsigned | YES  |     | NULL    |       |
| f6    | char(1)             | NO   | PRI |         |       |
+-------+---------------------+------+-----+---------+-------+
6 rows in set (0.55 sec)

509 :NAME IS NULL:2007/11/28(水) 08:55:01 ID:???
>>505
http://bugs.mysql.com/bug.php?id=28878

これっぽい。

510 :NAME IS NULL:2007/11/28(水) 21:34:21 ID:???
パフォーマンスを向上させるために、
複数のINSERT文を一つのマルチプルINSERT文に書き換える予定です。
ただ、SQL文が非常に長くなってしまいますが、
MYSQL5.0で、一つのSQL文の長さの制限ってどれ位でしょうか?
お願いします。

511 :NAME IS NULL:2007/11/28(水) 22:33:22 ID:fitDzhSE
SQLの長さに制限なんてあるの?

512 :NAME IS NULL:2007/11/29(木) 00:06:24 ID:???
とりあえずmax_allowed_packetで制限されてるみたいだよ。
max_allowed_packetのデフォルトは1MB。

$ ls -l long.sql
-rw-rw-r-- 1 xxxxx xxxxx 16921095 11月 29 00:04 long.sql
$ head long.sql
insert into ltest values
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
$ mysql test < long.sql
ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes


513 :NAME IS NULL:2007/11/29(木) 00:14:27 ID:???
1MBギリギリで実験。

$ ls -l long.sql
-rw-rw-r-- 1 taira taira 1048546 11月 29 00:12 long.sql

$ mysql test
Server version: 5.0.46-enterprise MySQL Enterprise Server (Commercial)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show variables like '%allow%';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

mysql> source long.sql
Query OK, 95320 rows affected (1.53 sec)
Records: 95320 Duplicates: 0 Warnings: 0

大丈夫。

514 :NAME IS NULL:2007/11/29(木) 13:13:13 ID:???
>>512>>513
わざわざ、検証までして下さってお忙しい中、どうもありがとうございました。
max_allowed_packetの設定値だったんですね。ちなみに、私が使っているxreaでは8MBに設定されていました。
とても参考になりました。
どうもどうも、ありがとうございました。

515 :NAME IS NULL:2007/11/29(木) 21:45:50 ID:???
SELECT * FROM t INNER JOIN a ON t.aid = a.aid INNER JOIN b ON t.bid = b.bid
3つのテーブルを結合しているのですが、USINGを使って書き換え方が分かりません、、

よろしくお願いいたします

516 :NAME IS NULL:2007/11/29(木) 22:01:52 ID:???
>>515
何がしたいのかもう少しkwsk

517 :515です:2007/11/29(木) 22:18:52 ID:???
どうもすみません
テーブル2つ(t,a)だったら
SELECT * FROM t INNER JOIN a USING (aid)
のように書けたのですが、3つになったとき
SELECT * FROM t INNER JOIN a USING (aid) INNER JOIN b USING (bid)
はエラーになります

USING句を知ってシンプルに書けるなあと思い使ってみようと思いました

518 :NAME IS NULL:2007/11/29(木) 22:23:14 ID:???
select t.* from t, a where t.aid=a.aid;
select t.* from t, a, b where t.aid=a.aid and a.aid=b.aid;

じゃダメなの?

519 :NAME IS NULL:2007/11/30(金) 00:35:50 ID:???
テーブルaにbidという列があるとダメみたい。

mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(11) | YES | | NULL | |
| col2 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> desc t2;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(11) | YES | | NULL | |
| col3 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> desc t3;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(11) | YES | | NULL | |
| col2 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> select t1.col1 from t1 inner join t2 using (col1) inner join t3 using (co
l2);
+------+
| col1 |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)

t2にcol2列が無い場合は、こんなかんじでちゃんと動く。
でもONで書くのが自然だと思うぞー

520 :NAME IS NULL:2007/11/30(金) 04:06:08 ID:???
MySQLで、

INSERT INTO `hoge_t` (`test_c`) VALUES (' ');

みたいなSQL文を実行した場合、
`test_c` に " " (半角スペース1つ) では無く、"" (文字列無し) が入ってしまいます。

これは何故でしょうか?
また、解決策はあるのでしょうか?

教えて下さい。

521 :NAME IS NULL:2007/11/30(金) 11:34:40 ID:???
http://dev.mysql.com/doc/refman/4.1/ja/char.html
http://dev.mysql.com/doc/refman/5.1/ja/char.html

5.1でvarcharを使えばいいんじゃね?
あるいはtinytextでも使うとか。


522 :NAME IS NULL:2007/11/30(金) 11:36:39 ID:???
where文を作成する時に、INとORだったら、どちらが速いでしょうか?

WHERE FIELD IN ('a', 'b', 'c')
WHERE FIELD A OR FIELD B OR FIELD C

FIELDには、indexを貼っています。

523 :NAME IS NULL:2007/11/30(金) 11:38:16 ID:???
>>522
ためしに、何回かクライアントで実行してみましたが、
実行するタイミングによって処理速度がちがって、
有意な差が見られないような気がしました。

524 :NAME IS NULL:2007/11/30(金) 13:09:58 ID:???
explain取ってみてプランが同じなら同じってことでいいと思う。
こっちで試した限りは同じだった。

525 :私のSQL:2007/12/01(土) 12:27:11 ID:HP5Wtz1B
初めまして。
MySQLでUpdateをしたときに思うように動作しないので質問させていただきます。

profileテーブルにsexという項目をvarchar(2)で定義しています。
UPDATE profile SET sex="きんさんぎんさん" where user_id = "00000002"
というSQLを流すと”きん”という結果がupdateされます。

通常こういった場合はエラーにならないのでしょうか。
なにか設定の問題なのでしょうか。

526 :NAME IS NULL:2007/12/01(土) 23:04:56 ID:???
mysql> create table ctest (c1 varchar(2));
Query OK, 0 rows affected (0.06 sec)

mysql> insert into ctest values ('abc');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+-----------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------+
| Warning | 1265 | Data truncated for column 'c1' at row 1 |
+---------+------+-----------------------------------------+
1 row in set (0.00 sec)

mysql> set @@sql_mode = 'strict_all_tables';
Query OK, 0 rows affected (0.00 sec)

mysql> insert into ctest values ('def');
ERROR 1406 (22001): Data too long for column 'c1' at row 1

mysql> select * from ctest;
+------+
| c1 |
+------+
| ab |
+------+
1 row in set (0.00 sec)

mysql> update ctest set c1 = 'abc' where c1 = 'ab';
ERROR 1406 (22001): Data too long for column 'c1' at row 1


527 :NAME IS NULL:2007/12/02(日) 11:16:23 ID:???
>>525
strictモードで使えば?
http://dev.mysql.com/doc/refman/5.1/ja/char.html

528 :NAME IS NULL:2007/12/02(日) 12:29:29 ID:???
質問者の使用バージョンも判らんのに。

529 :NAME IS NULL:2007/12/02(日) 15:48:26 ID:???
んなもん、書かない方が悪い

530 :NAME IS NULL:2007/12/03(月) 23:59:40 ID:PJiuXVSt
answerカラムの値が「赤」「赤,青」と、2件のレコードがあるとします。

SELECT count(answer) AS cnt FROM faq WHERE answer LIKE '赤' GROUP BY answer

とした時、cntは1にしかなりません。
1つのカラムに複数の値が入っているから、集計出来ていないのだと思いますが
どういうSQLを書けばいいのでしょうか?

531 :NAME IS NULL:2007/12/04(火) 00:55:32 ID:???
何がしたいのかはっきりせんけど
・LIKE '%赤%'
・GROUP BY を削除

532 :NAME IS NULL:2007/12/04(火) 01:39:25 ID:???
>>531
%は抜けていました。すみません。

あと、GROUP BYはいらなかったんですね。
これを削除したら希望通り、件数が表示されました。
ありがとうございました。

533 :NAME IS NULL:2007/12/04(火) 09:35:19 ID:J4jZq34H
MySQL Server 5.0 をインストールしたのですが環境設定の、

Install As Windows Servicd
Service Name:
Include Bin Directory in Windows PATH

3つのチェック項目が現れる部分で一番下の、
Include Bin Directory in Windows PATH
以外の2つの項目が選択できません。
その後のパスワード設定は画面すら飛ばされてしまいます。

OSはWindowsMEでの起動を試みています。
どなたかMEでも起動する方法を知りませんか?
何とかMEで起動させたいのですが。

534 :NAME IS NULL:2007/12/04(火) 09:53:01 ID:???
ここよめ
http://dev.mysql.com/doc/refman/5.0/en/windows-installation.html

Windows 95/98/ME and versions of Windows
older than these are no longer supported.

Windows 95/98/MEおよびそれより古いバージョンの
Windowsはもうサポートされていません。

535 :NAME IS NULL:2007/12/04(火) 11:43:29 ID:???
>>533
非NT系Windowsにはサービスって概念がないから
それ関係の項目が表示されないだけだと思う
インストール開始時のOSチェックで蹴られないなら動く可能性はある
インストール終了したら手動でMySQLを起動/終了する方法を試してみて
ttp://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html

まあ本当に動かないかもしれないので動いたら儲けものぐらいで

536 :NAME IS NULL:2007/12/04(火) 23:42:28 ID:???
MEとか久々に見たな。

537 :533:2007/12/05(水) 02:46:04 ID:???
あれから調べましたが、コマンドラインが起動してすぐに強制終了するので、
何かをするとか無理ですかね?
やっぱりパスワード設定出来ないと駄目なのかなぁ…

538 :NAME IS NULL:2007/12/05(水) 06:59:54 ID:???
> コマンドラインが起動してすぐに強制終了するので
本当に強制終了?なんらかのプログラム(mysql.exeとか)を起動後
コマンドプロンプトが一瞬だけ表示されてすぐ消えるとかじゃなくて?
文面からしてコマンドライン自体よくわかってないように見えるけど

539 :NAME IS NULL:2007/12/05(水) 07:11:16 ID:???
素直に.4.1以前を使った方がいいと思う(本に添付されているやつとか


540 :537:2007/12/05(水) 12:34:10 ID:???
>>538
それです。一瞬表示されて消えてしまいます。
お察しの通りSQLの勉強始めたばかりなのでよく分かってません…

>>539
4.1以前ならMEでも動くんですか?
それならそちらを探し出して使います。

541 :NAME IS NULL:2007/12/05(水) 12:58:02 ID:???
だからマニュアル嫁
http://dev.mysql.com/doc/refman/4.1/ja/win95-start.html

ここにある
http://dev.mysql.com/downloads/mysql/4.1.html

542 :537:2007/12/05(水) 13:40:38 ID:???
>>541
超助かります。ありがとうございました。

543 :NAME IS NULL:2007/12/05(水) 20:10:40 ID:???
mysql サーバーを外付けhddなどに入れて macとwindowsで共有することは出来るでしょうか?
2台のネットワークにつながっていないパソコンにhddをつないで
mysqlを持ち運ぼうとおもっています
一つのデータベースを2種類のサーバをつかって共有するという感じです
実行は別々の時間です
windowsだけならば何でもできるけど macなんで良い方法ないですか?

544 :NAME IS NULL:2007/12/06(木) 09:29:06 ID:???
>>543
DBをFATに作れば可能

545 :NAME IS NULL:2007/12/08(土) 22:42:32 ID:AP+yiBIl
すみません、お聞きします
今、スケジューラみたいのものを作っていて、
month=12&day=9 のような形でサーバに送って、それぞれまともにmonthカラムとdayカラムに
突っ込んでいます。
これを、date型に成形して、mysqlの方でもその形で1カラムにまとめたとしたら、
運営上どのような利点があるんでしょうか? 厨質問かも知れないですが、回答お願いします
検索などの速度が向上するとかあるんでしょうか、、

546 :NAME IS NULL:2007/12/08(土) 23:33:53 ID:???
日付型にしとくと、日付の演算が可能になるでしょ
月と日が別カラムだと、月をまたぐ計算が面倒

547 :545:2007/12/09(日) 00:30:25 ID:???
ありがとうございます そういう効果があるんですね
日付型の特長について、調べてみます!

548 :NAME IS NULL:2007/12/09(日) 18:05:35 ID:???
MySQLのデータを、一般公開できるくらいのデザインで
簡単に整理して表示するWebスクリプトはありますか?
phpMyAdminなどの管理用のユーティリティソフトは導入していますが、
・検索や優先順位付きのソートだけでよい
・ユーティリティだけにデザインが難しい
という問題があります。
スクリプトをいちから組むのはめんどくさくて…


549 :NAME IS NULL:2007/12/09(日) 18:20:12 ID:???
webprog板池

550 :NAME IS NULL:2007/12/09(日) 18:48:03 ID:???
>>549
了解です。スレ汚しすみませんでした。

551 :NAME IS NULL:2007/12/11(火) 00:11:12 ID:???
sage

552 :NAME IS NULL:2007/12/11(火) 15:07:28 ID:???
innoDBにてリレーションを組んだテーブルがあるんですが、
片一方のテーブルのデータを削除すると "foreign key constraint fails"が出ます。

ondelete cascadeをせずに、片一方のテーブルのデータを削除する方法はありますでしょうか。

553 :NAME IS NULL:2007/12/11(火) 19:00:59 ID:???
何のための外部キーなのだ

554 :NAME IS NULL:2007/12/12(水) 00:13:05 ID:???
>>552
set foreign_key_checks=0;
おすすめはしない。

555 :NAME IS NULL:2007/12/12(水) 02:17:14 ID:???
夜だからかちょっと混乱してるかもです…

ショッピングカートのデータベースです。
user,shopcartというテーブルがあり、それぞれ

-user
userid int(11)
name varchar(64)

-shopcart
userid int(11)
goodsid int(11)
price int(11)
accounted int(1) #0:未清算,1:清算済み

となっています。(実際はもっと複雑で違った用途ですが…)
このとき、
未清算(accounted=0)で、価格が10,000円以上(price>10000)の商品が
買い物かごに入っているユーザの名前を検索するのは
どういったSQL文を書けばいいのでしょうか。

556 :NAME IS NULL:2007/12/12(水) 02:36:02 ID:???
違った…これじゃすごい単純だ
SELECT name from INNER JOIN shopcart ON user.userid = shopcart.userid WHERE shopcart.price>10000 & shopcart.accounted = 0
でいけたわ

必要なのは
「未清算(accounted=0)で、価格が10,000円以上(price>10000)の商品が
買い物かごに入っている」
かつ
「清算済み(accounted=1)で、価格が10,000円以上(price>10000)の商品が
買い物かごに入っている」

ユーザの名前を検索するSQL文でした
お騒がせしてます

557 :NAME IS NULL:2007/12/12(水) 03:14:43 ID:???
>>556
まだおかしい
条件をよく見直すよろし

558 :NAME IS NULL:2007/12/12(水) 03:31:25 ID:???
priceは除いても必要な構文は同じなので除外します。
日本語で言うと
「未清算の商品と清算済みの商品がそれぞれ1点以上カートに入っているユーザの名前」となります

つまりまとめてみると

『shopcartに userid=x AND accounted=1 なレコードがあり、かつ
 shopcartに userid=x AND accounted=0 なレコードがある』
という条件を満たすuserid=xに対応するnameを求める

ということです。

ん?おかしい?
GROUP BYでもいける気もする

559 :NAME IS NULL:2007/12/12(水) 03:38:11 ID:???
これでどうか

select u.name from
(select distinct userid from shopcart where accounted=0 and price>=10000) a,
(select distinct userid from shopcart where accounted=1 and price>=10000) b,
user u
where a.userid=b.userid
and a.userid=u.userid;

560 :NAME IS NULL:2007/12/12(水) 03:40:05 ID:???
>>559
みゃー
サブクエリ(?)でしたか
未知の領域ですががんばって勉強します
ありがとうございました

561 :NAME IS NULL:2007/12/12(水) 04:00:45 ID:???
having を使ってうまいこと書けないかと思ったが
眠いのでネルス

562 :NAME IS NULL:2007/12/12(水) 21:07:36 ID:5IOTZHnS
mysqlの管理用にphpMyadminを触っています。
インストールの過程で要編集とあるconfig.inc.phpの項目が自分のpmaの
バージョンでは存在しません
自分のバージョンは2.11.3で、存在しない項目は以下のとおりです
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['PmaAbsoluteUri'] = '';
どうしたらいいでしょう?
http://www.shiftweb.net/material/phpmyadmin/phpmyadmin.html を参考に作業してます

ここで質問していいのか不安でしたがお尋ねしました お願いします


563 :NAME IS NULL:2007/12/12(水) 21:41:40 ID:???
MySQLのばーじょn

564 :NAME IS NULL:2007/12/12(水) 23:08:20 ID:???
Mysql administratorでUTF-8で保存した日本語が文字化けるんだけど、対応してない?
MySQLは5です。

565 :NAME IS NULL:2007/12/12(水) 23:18:42 ID:???
>>562
そのページは phpMyAdmin 2.5.6 向けに書かれているみたいだから
書かれている通りに作業を進めていってもうまくいかないと思うよ。
(認証メソッドもクッキー認証のままだろうし)

面倒くさいかもしれないけど、設定ファイルに書かれている項目を
一つひとつ理解しながら進めるのがいいと思う。
あるいは最新版にも使えそうな別の解説ページを探すとか。

566 :NAME IS NULL:2007/12/12(水) 23:45:56 ID:???
>>565
そうみたいですね
2.5.6を落として入れてみたんですが、それも上手くいきませんでした。
実は壊れたマシンの中じゃ動いてたんだけど、こういうのって
上手く動作したらすぐにそのバージョンや手順をメモっておくべきなんでしょうね
失敗したなぁ;;  ありがとうございました

567 :NAME IS NULL:2007/12/13(木) 01:16:04 ID:???
あとそのときのバージョンのインストールパッケージ一式残しておくこと
いつまでもダウンロードできるとは限らない


568 :NAME IS NULL:2007/12/13(木) 10:31:56 ID:???
CPUの交換を行って、CPUの性能が上がったのに
データアクセスが遅くなりました。
CPUを交換したら、Mysqlの再インストールが必要な場合があるんでしょうか?

569 :NAME IS NULL:2007/12/13(木) 13:47:58 ID:???
>>568
おいおい、当たり前でしょ。システムの主要部分の構成を変えているのに、
そのままで運用する気かよ。

570 :NAME IS NULL:2007/12/13(木) 15:39:20 ID:???
>>569
返答ありがとうございます。
やっぱりMysqlをインストールする時にそのマシンの
構成によって何かしらの変化があるって事なんですね?
再インストールすれば大丈夫でしょうか?
素人ですいません。。。


571 :NAME IS NULL:2007/12/13(木) 15:42:27 ID:???
バイナリの再インストールなら変わらないんじゃないの?

572 :NAME IS NULL:2007/12/13(木) 18:03:30 ID:???
とりあえず、
ttp://ossipedia.ipa.go.jp/capacity/EV0604170061/


573 :NAME IS NULL:2007/12/13(木) 18:26:59 ID:???
MySQL5.0.30未満+InnoDBの環境だと、
CPUのコア数増やすと返って遅くなる場合があるよ

574 :NAME IS NULL:2007/12/13(木) 19:57:33 ID:???
カーネルにも依存するわな。
今度のFreeBSDはマルチコアに対して期待できるパフォーマンスを発揮するが、
LINUXだと、コアが増えるとパフォーマンスが落ちるみたいな話があるし。

575 :NAME IS NULL:2007/12/13(木) 20:18:52 ID:???
☆トム・クルーズについて語らう☆part3Tom Cruise [海外芸能人]
Pythonのお勉強 Part22 [プログラム]
   萌えろ!シエンナ・ギロリー    [海外芸能人]
【フィギュア】禁断の小学生バニー!「涼宮ハルヒの憂鬱 キョンの妹 バニーVer.」発売 [萌えニュース+]
海外芸能人板が在日朝鮮人に支配されてる見た感想 [海外芸能人]

576 :NAME IS NULL:2007/12/13(木) 20:51:13 ID:???
んで、>>569 の言いたい事は何?

577 :NAME IS NULL:2007/12/13(木) 21:29:08 ID:???
いえ、別に言いたいことはありません。ただ、・・・

578 :NAME IS NULL:2007/12/14(金) 12:32:18 ID:???
ただ単に偉そうに言って見たかっただけだろ。


579 :NAME IS NULL:2007/12/14(金) 20:27:54 ID:3RR5o2qv
あるデータベース内のテーブル名の一覧を取得するには、
SHOW TABLES FROM db_name;
となり、更にテーブル名が「dtb」から始まるものを同様に取得するには、
SHOW TABLES FROM db_name LIKE 'dtb%';
になると思いますが、
逆にテーブル名が「dtb」から始まるもの以外の一覧を取得するには
どのような SQL 表現となりますでしょうか?

間違っているとは分かっていながら、あえて書くと
SHOW TABLES FROM db_name NOT LIKE 'dtb%';
のような感じのことをしたいのです。
どなたかご教示ください。

580 :NAME IS NULL:2007/12/14(金) 21:03:55 ID:???
>>579
バージョンは?
俺んとこ、5.0.45だけど、

show tables like 'k%';

で使ってるデータベースの中からkが先頭の奴の表示が出来たけど。

581 :NAME IS NULL:2007/12/14(金) 21:29:17 ID:???
5.0以降なら

select TABLE_NAME
from information_schema.TABLES
where TABLE_SCHEMA = 'db_name'
and TABLE_NAME not like 'dtb%';

582 :580:2007/12/14(金) 21:35:14 ID:???
…以外のだったのね スマソ

583 :NAME IS NULL:2007/12/14(金) 22:31:47 ID:dYcjukjg
mysqlではありませんが、識者の方コメントお願いします↓

米アマゾン Webデータベース「SimpleDB」を開発
http://namidame.2ch.net/test/read.cgi/news/1197638836/l50

584 :NAME IS NULL:2007/12/14(金) 22:58:52 ID:???
2ちゃんねるって有料なの?
はい。有料です。
2ちゃんねる使用料
■閲覧
1スレッド 25円
■書きこみ
1レス 10
スレ立て 500円(大人の時間、ニュース速報は1000円)
混雑時は立てる事が出来ない場合がありますが、その時は課金されません
■書きこみ放題
・プラチナプラン 4800円 閲覧無料 スレ立て200円、通常3スレ/月、実況5スレ/週の無料サービス
・ゴールドプラン 3500円 閲覧無料 スレ立て半額 HOT!
払わないと、大変なことになるかもしれませんね・・・( ̄ー ̄)ニヤリ
2ちゃんねるは有料だった
ソース
http://www.geocities.jp/guide_2ch/

585 :579:2007/12/14(金) 23:20:12 ID:???
>>581
レスありがとうございます。
こちらの使っているものは MySQL 4.1.22-community-nt でした。
せっかく教えてもらえる機会をいただいたのに
バージョンを書くことをすっかり忘れてしまいました。
申し訳ありませんが、再度お知恵をお貸しください。

586 :NAME IS NULL:2007/12/15(土) 00:26:49 ID:???
>>584
後から請求来るの知らねえの?


587 :NAME IS NULL:2007/12/15(土) 05:46:55 ID:o7//W6yx
現在MySQL5.0.45@FreeBSD6.2(サクラの専用)を運用してるんですが、日本語にうまく対応してくれません。
具体的には、
SELECT * FROM hoge WHERE hogege='日本語';
という文を書いても何も返ってきません。

SELECT * FROM hoge WHERE id='1';
でやると返ってきます。SET NAMESやSET CHARACTER SETなども試してみましたし、default-character-setもUTF8で統一したんですが、駄目みたいです。
何が原因かわかりますか?初心者質問で申し訳ありません。

588 :NAME IS NULL:2007/12/15(土) 06:09:03 ID:???
select文を打つ前にset charset utf8を投げてみれ。
コマンドプロンプトでsql文を投げてるなら、PHPのmysql_queryでも試してみ。
そのテーブル自体がutf8じゃなかったりすると、ALTER TABLEで文字コードを変換する必要がある。
未確認だけど、たぶんdefault-character-set統一後にTABLEを作成する必要があるかもです。

589 :NAME IS NULL:2007/12/15(土) 06:13:47 ID:???
>>588
そういう押し付けがましいレスは止めろ。
5.0.45って書いているんだから、文字コードの問題じゃないだろ。

ラーメン屋の癖にイタリアン風の盛り付けをして、
フォークとスプーンで食べさせるのと一緒だろ。
分をわきまえろ。


590 :NAME IS NULL:2007/12/15(土) 06:15:43 ID:???
イタリア系の人はラーメンもフォークで食おうとするけどね。

591 :NAME IS NULL:2007/12/15(土) 07:06:54 ID:???
そういう押し付けがましいレスは止めろ。

流行ってるんですか?

592 :NAME IS NULL:2007/12/15(土) 07:09:30 ID:???
低脳の決まり文句です。

593 :NAME IS NULL:2007/12/15(土) 08:22:12 ID:???
>>589
そういうイタリア風のレスは止めろ。

594 :NAME IS NULL:2007/12/15(土) 08:44:51 ID:???
スパゲッティ食いに行って
箸出されるのも困るよね

595 :NAME IS NULL:2007/12/15(土) 08:50:23 ID:???
チャーハン注文してスプーン出てきたら、食べやすくはあるが萎える。 

596 :NAME IS NULL:2007/12/15(土) 10:24:38 ID:o7//W6yx
すいません。チャーハンはいつもスプーンで食べます。
set charset utf8でも駄目でした。ちなみにPHPから投げてます(コマンドからは何故か日本語入力できないので)
一応idからとってきたときにはデータはutf8で表示されており、データベースもテーブルもutf8になっていました。

日本語の問題だと思うんですが、どこをいじれば良いかわからないです。

597 :NAME IS NULL:2007/12/15(土) 10:41:02 ID:vWyiU39c
>>596
PHPのスクリプトはUTF-8で書かれてるの?

598 :NAME IS NULL:2007/12/15(土) 12:54:40 ID:???
set names utf8; も試してみて。
あと関係ありそうなシステム変数を手当たり次第ダンプすれば
解決の糸口になるかも。
show variables like 'character_set%';
show variables like 'collation%';

599 :NAME IS NULL:2007/12/15(土) 13:36:45 ID:???
チャーハンに付いてくるレンゲでは食べにくい。
普通の金属のスプーンなら食べやすいけど。

PHP使ってる時点でスキル低いから無理でしょ。
SJIS使えるアクセスでも使ったら?

600 :NAME IS NULL:2007/12/15(土) 13:38:17 ID:???
PHPで投げるのがそんなに嫌か?
適材適所だと思うんだがなぁ

601 :NAME IS NULL:2007/12/15(土) 13:50:21 ID:???
>>599は人口無能じゃないの?
他のスレでもこういうの見かけたことあるよ

602 :NAME IS NULL:2007/12/15(土) 14:04:37 ID:???
プログラム言語に何を使ってるかということと
スキルの優劣はなんら関係ないと思うんだがね
プログラム言語なんてのは、目的を達成するための
単なる道具に過ぎないわけだし

603 :NAME IS NULL:2007/12/15(土) 15:27:07 ID:???
アクセス、、、笑

604 :596:2007/12/15(土) 17:42:01 ID:o7//W6yx
これでset names utf8投げても駄目なんです。
character_set_client => sjis
character_set_connection => sjis
character_set_database=> utf8
character_set_filesystem => binary
caracter_set_results => sjis
character_set_server => utf8
character_set_system => utf8
collation_connection => sjis_japanese_ci
collation_database => utf8_general_ci

605 :NAME IS NULL:2007/12/15(土) 18:44:10 ID:???
そこは set names sjis じゃね?

606 :NAME IS NULL:2007/12/16(日) 02:08:05 ID:ZkJ63S3/
現在自宅では、WindowsXPに4.0.24を入れてテストしています。
いきなり5系にしたいのですが、phpMyAdminなどで
データベースの内容をインポートするだけで、移行出来ますでしょうか?
もしくは、作成しているPHPが動かなくなる可能性はあるのでしょうか?

607 :NAME IS NULL:2007/12/16(日) 02:21:15 ID:???
データが20行あるとして、

ORDER BY field ASC LIMIT 3 とすると
1行目
2行目
3行目

ORDER BY field DESC LIMIT 3 とすると
20行目
19行目
18行目

と表示されます。ですが、

18行目
19行目
20行目

と表示させる方法が分かりません。どうすればいいのでしょうか。
初歩的な質問で済みません。

608 :NAME IS NULL:2007/12/16(日) 02:41:58 ID:???
order by field asc limit 3 offset 17;

609 :NAME IS NULL:2007/12/16(日) 02:48:24 ID:???
そういや”ラスト3”って指定なかったっけ?

610 :NAME IS NULL:2007/12/16(日) 03:07:36 ID:???
>>609
無いよ。勝手な仕様を脳内で創出しないように。
こんど虚偽の投稿したら、偽証罪で通報するよ。

611 :NAME IS NULL:2007/12/16(日) 07:59:38 ID:???
なんと香ばしい発言だこと w

612 :NAME IS NULL:2007/12/16(日) 13:35:23 ID:???
>>608
ありがとうございます。
状況によって行数が増える(わからない)場合はどうすれば良いですか?

613 :NAME IS NULL:2007/12/16(日) 15:07:54 ID:???
>>612
1. DESCで取得して、逆順に表示する
2. 最初にOCUNT()する


614 :NAME IS NULL:2007/12/16(日) 15:08:49 ID:???
あ、COUNT()のtypoね。


615 :NAME IS NULL:2007/12/16(日) 15:25:36 ID:???
>>613
MySQL側ではそのような機能はないんですね。
phpを利用しているので、1.で逆順に表示することにしました。
ありがとうございました。


616 :NAME IS NULL:2007/12/16(日) 20:21:25 ID:???
降順に欲しいだけ取るサブクエリの結果を
さらに昇順にソートすれば?
試してないので出来ないかもしれんけど

617 :NAME IS NULL:2007/12/16(日) 22:08:31 ID:???
>>616
SELECT * FROM (SELECT * FROM table ORDER BY field DESC LIMIT 3) ORDER BY field ASC

できそうですね。4.0なのでテストできないですが…

618 :NAME IS NULL:2007/12/17(月) 01:20:54 ID:+StW6xi3
INSERTとSELECTを1文で行いたいのですがどんな方法があるでしょうか?
INSERT後にselect last_insert_id()を実行したいのですが1文で書ければと思っております・

619 :NAME IS NULL:2007/12/17(月) 11:11:00 ID:???
そういうプロシージャを書くとか?

620 :NAME IS NULL:2007/12/17(月) 11:29:27 ID:???
function hoge(hoge) {
insert into hage(hoge)values('hoge');
select last_insert_id();
}

hoge(); // ←一行

621 :NAME IS NULL:2007/12/17(月) 14:53:32 ID:???
日本語ってほんともうだめ
文字コードとかめんどくさ

622 :NAME IS NULL:2007/12/17(月) 14:58:41 ID:???
複雑なほうがエンジニアの需要も高くなるんで、それもまた良しかなと

623 :NAME IS NULL:2007/12/17(月) 23:20:32 ID:???
field_a, field_b, field_c, field_dというテーブルがありまして、
field_aとfield_bとfield_cをキーにしたり、field_aとfield_cをキーにしてりして、
SELECTしたりUPDATEしたりするのですが、この場合、どういう風なINDEXをはるとよいでしょうか?

案1) field_a, field_b, field_cに対して一つのINDEX
案2) field_a, field_b, field_cと、field_a, field_cとの二つのINDEX

宜しくお願いします。

624 :NAME IS NULL:2007/12/18(火) 00:14:48 ID:???
条件が (A,B,C) と (A,C) だけなら
(A,C,B) の index を作って (A,C,B) と (A,C) の条件にする

のがマンドクサなら案2で

625 :NAME IS NULL:2007/12/18(火) 01:00:09 ID:???
メール考えなきゃUTF8で統一。
メールもRFC無視してUTF8で送ってしまえば良いのだよ。8ビット目落とされても文句は言えないが。

626 :NAME IS NULL:2007/12/18(火) 10:53:26 ID:???
>>625
Content-Transfer-Encodingに8bitを指定してもダメなの?

ま、もうUTF8でいいと思うんだけど、携帯がなー


627 :NAME IS NULL:2007/12/18(火) 16:53:45 ID:???
スレ違いでごめんなさい・・・

データグリッドで1レコード複数行表示が可能なおすすめのフリーソフトってありませんか?

628 :NAME IS NULL:2007/12/19(水) 14:21:13 ID:???
mysqlでmy.iniとmy.cnf両方にdefault-character-set=sjisを追加しても、
create database後のstatus、ServerとDbの項目がlatin1のまま変わらない。
他のClientとConnの項目はsjisになってるんだけど、どうすればええのん?

629 :NAME IS NULL:2007/12/19(水) 15:09:28 ID:???
テーブル作る時、数値型のカラムに「最大表示サイズ」のオプションがありますが、
これってどういう意味があるのでしょうか?
絶対値でも桁数、バイト数でも無いし・・・

630 :NAME IS NULL:2007/12/19(水) 15:27:54 ID:???
>>628だけど事故解決しました。

631 :NAME IS NULL:2007/12/20(木) 10:59:51 ID:???
>>629
zerofillした時に関係する気がするけど確認してない。
つかドキュメント読めよ。

632 :NAME IS NULL:2007/12/20(木) 13:07:54 ID:???
すみません、言葉足らずでした(汗

リファレンスは読んだんですが「最大表示サイズ、最大は255」となっていて、
ためしにsmallint(3)で定義したカラムに、「1111」を入れることもできるし
selectで読むことができたので、じゃあ何の意味があるんだろう?・・・と。

zerofillを指定しない時は指定する意義は無いということでしょうか?


633 :NAME IS NULL:2007/12/20(木) 16:52:11 ID:???
MySQLのバージョン 5.0.45
MySQL の文字セット: UTF-8 です

phpMyadminで以下のように実行すると

CREATE TABLE `test_3`.`test` (
`test_id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL ,
`name_kana` VARCHAR( 255 ) NOT NULL ,
INDEX ( `name` , `name_kana` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

「 #1071 - Specified key was too long; max key length is 1000 bytes 」
というエラーが出て作成できません
ググってみると原因は何となく分かったのですが
以下のように書き直したところ、正常に実行できました

CREATE TABLE `test_3`.`test` (
`test_id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL ,
`name_kana` VARCHAR( 255 ) NOT NULL ,
INDEX `name` ( `name` ) ,
INDEX `name_kana` ( `name_kana` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

命令文としては同じ内容だと思うのですが、
実行出来る、出来ないの違いはなんなのでしょうか?

634 :NAME IS NULL:2007/12/20(木) 19:18:51 ID:0XfdB7ZB
携帯メールアドレスを抽出する為に
WHERE m_mail LIKE '%@.ezweb.ne.jp%'

としたのですが、@が認識されないみたいです。
どうしたらいいのでしょうか?

635 :NAME IS NULL:2007/12/20(木) 20:11:58 ID:???
>>633
上の例は name と name_kana の組み合わせのインデックスを作る
下の例は name, name_kana それぞれ単独のインデックスを作る

UTF-8 の char 系 index はフィールド長 * 3 だけ必要みたいで

>>634
@ の次の . が余分 とかいうオチじゃないよね?
最大 1000 バイトなので 333 文字以下にしないとエラーになる、、、みたい
データのほとんどが先頭 xxx/yyy 文字に収まるなら、INDEX(name(xxx),name_kana(yyyy))
とキーの長さを指定する手もある、、、みたい

636 :NAME IS NULL:2007/12/20(木) 20:12:51 ID:???
何か変だ

>>633
上の例は name と name_kana の組み合わせのインデックスを作る
下の例は name, name_kana それぞれ単独のインデックスを作る

UTF-8 の char 系 index はフィールド長 * 3 だけ必要みたいで
最大 1000 バイトなので 333 文字以下にしないとエラーになる、、、みたい
データのほとんどが先頭 xxx/yyy 文字に収まるなら、INDEX(name(xxx),name_kana(yyyy))
とキーの長さを指定する手もある、、、みたい

>>634
@ の次の . が余分 とかいうオチじゃないよね?

637 :NAME IS NULL:2007/12/20(木) 21:17:43 ID:???
INDEXとKEYの違いってなによ

638 :NAME IS NULL:2007/12/20(木) 21:33:02 ID:???
>>637
INDEX と PRIMARY KEY の違いなら
PRIMARY KEY = UNIQUE + INDEX

639 :NAME IS NULL:2007/12/20(木) 21:42:23 ID:???
EXPLAIN で、extraにでてくる where used; ってどういう意味?
where節があります、とかその程度の意味でいいの?

640 :NAME IS NULL:2007/12/20(木) 21:47:33 ID:???
>>632
リファレンスのどこを読んだの?

ttp://dev.mysql.com/doc/refman/4.1/ja/numeric-types.html
ttp://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html

に書いてあるので読みましょう。



641 :NAME IS NULL:2007/12/21(金) 12:46:32 ID:???
mysqldumpでテーブル毎にdumpしてって、900万レコードくらいのテーブルだけdumpに失敗します。
mysqldumpで巨大なテーブルのdumpを取りたい場合どうすれば良いのでしょう?


642 :NAME IS NULL:2007/12/21(金) 13:05:42 ID:???
>>641
その場合は、dumpじゃなくてjumpでやればいいよ。

643 :641:2007/12/21(金) 13:47:02 ID:???
>>642
アドバイスありがとうございます。
おかげさまで解決しました。

644 :633:2007/12/21(金) 13:57:00 ID:/Pkbu7e1
>>636
組み合わせのインデックスは知りませんでした
上と下は全然違う内容だったんですね
phpMyadminのCREATE TABLEでINDEXの指定の仕方が悪かったようです…

丁寧なお答え ありがとうございました

645 :NAME IS NULL:2007/12/21(金) 14:54:57 ID:???
みんなEXPLAINって使わないのかね・・・ふむ

646 :NAME IS NULL:2007/12/21(金) 22:22:34 ID:???
質問です。
検索結果に見つかった順にシーケンス番号のようなものつけたいと思っています。

SELECT ・・・ FROM table ORDER BY ・・・
としたとき、結果セットとして、
data_no, (そのほかのカラム)
1,(そのほかのカラムの検索結果)
2,(そのほかのカラムの検索結果)
3,(そのほかのカラムの検索結果)

みたいな感じにdata_noの項目を追加したいと思っています。
どのようなSQL文で実現できるでしょうか?

647 :646:2007/12/21(金) 22:29:04 ID:NlVp5uky
補足です。
実際にしたいことは、
INSERT INTO other_table SELECT ・・・・
のような感じなので、表示側での対処はできません。

648 :NAME IS NULL:2007/12/22(土) 03:02:11 ID:7IWITQTe
JOINの考え方について質問です。

aテーブルに1000レコード有り、bテーブルに10万レコードあるとします。
これをINNER JOINで結合すると、

実質1000×100000=1億レコード

となるのでしょうか?上記のような結合をすると、インデックスを付けても
凄く重いので、実際は物凄いレコード数になっているのかな?と思ってます。



649 :NAME IS NULL:2007/12/22(土) 03:56:11 ID:???
結合条件が一つもなければ1億になる。
けど普通はリレーションがあるからそんなことにはならない。

たとえばaテーブルが注文テーブルで、bテーブルが注文明細テーブルなら、
bテーブル側の注文番号に正しくインデックスがついてれば
1000(注文件数)×100(注文1件あたりの明細件数)=100000レコード
になるだけ。

650 :NAME IS NULL:2007/12/22(土) 10:44:04 ID:???
分割insertすれば5000マンで済むよん

651 :NAME IS NULL:2007/12/22(土) 10:47:42 ID:???
DB接続時にmy.cnfを設定するようなやりかたなかったでしたっけ?
mysql://user:pass@localhost?my.cnf/test
みたいな

652 :NAME IS NULL:2007/12/22(土) 11:07:47 ID:???
>>646
other_table 側の data_no を AUTO_INCREMENT にしておくとか

653 :648:2007/12/22(土) 11:44:14 ID:7IWITQTe
>>649
それでもやっぱり、1000×100で10万なんですね・・。

質問したのは、住所録を作成する時、郵便局が発行している
郵便番号・住所データと結合する場合を想定していました。
あれは全部で10万レコード以上あるし。

会員住所+住所データを結合すると、もしかして>>648みたいな
考え方になると。だから極端に重くなるのでは?っと。

654 :NAME IS NULL:2007/12/22(土) 13:26:14 ID:???
>>653
なんか勘違いしてないか?
郵便番号と住所を結合するなら会員住所1に対して住所データ1だろ?

655 :NAME IS NULL:2007/12/22(土) 13:28:43 ID:???
>>653
ぐぐればいくらでも答えは有るのに。
http://oshiete1.goo.ne.jp/qa746515.html
とか。

656 :NAME IS NULL:2007/12/23(日) 03:12:42 ID:OaV/mejR
UNIONでテーブル同士を結合したら、かなり表示が重いです。

SELECT * FROM member_a INNER JOIN address USING(address_id)
UNION
SELECT * FROM member_b INNER JOIN address USING(address_id)
LIMIT 10

としています。INDEXもaddress_idに指定しています。
しかし、ローカルPC上で確認した時、表示に約10秒はかかります。

EXPLAINをしても特に問題ありません。
member_a,bにはそれぞれ1000レコードあり、addressには1万レコードあります。

657 :NAME IS NULL:2007/12/23(日) 04:25:01 ID:???
>>656
addressテーブルはインデックスきいてるってことだから、
1万だろうが1000万だろうが速度差はそれほど出ないですよ。

SELECT * に時間かかってないかい? SELECTを整数の
1項目だけに絞ったら何秒になんの?

658 :NAME IS NULL:2007/12/23(日) 04:35:04 ID:???
>>656
UNIONは暗黙的にソートするから
内部的にmember_a,bを全件取ってきてしまうな。
UNION ALLにするとどうなる?

UNIONが避けられないなら、my.cnfで
sort_buffer_sizeとtmp_table_sizeを増やしてみよう。

659 :NAME IS NULL:2007/12/23(日) 08:02:28 ID:???
ところで社保庁のデータベースって何使ってんの?
高スペクでも照合に時間かかるだろうなー。

660 :NAME IS NULL:2007/12/23(日) 10:08:05 ID:???
>>659
社会保険庁は、NTT系が受注開発しているから、
Oracleに決まっているだろ

661 :NAME IS NULL:2007/12/23(日) 11:04:16 ID:???
>>656
EXPAINの結果を張らないヤツの「問題ありません」は信用できないからなー

662 :NAME IS NULL:2007/12/23(日) 11:35:28 ID:???
MySQL ver4.1以降の文字コード自動変換について
イマイチ理解できない部分があります。

MySQL文字化けで調べてみると、
文字コード変換が原因なので、この機能が働かない状態にする、
というのが解決方法として紹介されていますが、
文字コードが異なった場合の補正のための機能であって、
client側の文字コードがujis、
server側の文字コードがutf8の場合、
この自動変換をoffにしたら、
ujisのデータをutf8を入れるところに放り込むことになるわけですが
問題ないのでしょうか?
(client/serverの文字コードが一致しているんであれば、
そもそも自動変換自体働かないわけで、offにする必要性もでてきませんよね?)

自動変換をoffにするんだよ、というところには多くのサイトで
言及されているのですが、結局client、serverとの
文字コードの関係性が良く理解できません。

663 :NAME IS NULL:2007/12/23(日) 11:40:02 ID:???
開発と照合で5000マンだっけ?>社保庁
稼ぐなぁ

664 :NAME IS NULL:2007/12/23(日) 11:52:30 ID:???
じゃおまいら5000マソもらってできるか?アンダーソン君

665 :NAME IS NULL:2007/12/23(日) 12:24:22 ID:5+xrhDuZ
質問させてください。

MySQL+PHPでWebブラウザから画像データ(約9KB)をアップロードして
その画像データをMySQLにBLOB型で登録しようとしています。

アップロードデータは以下のように処理しています。
$img = file_get_contents($_FILES["img"]["tmp_name"]);
$img = addslashes($img);
↑$imgを登録したい。

しかしINSERT文で
You have an error in your SQL syntax;
となってしまいます。

また、疑問点として
1.BLOB型で上のような画像データを登録する際にSQL文のデータ部分は
シングルクォートで囲う必要があるのか?

2.addslashesは必要か?

※ネットで調べると1.2ともに付いていたり、付いてなかったりします。


環境:CentOS5.1
    MySQL5.0.22(文字コードはSJIS)

以上よろしくお願いします。

666 :656:2007/12/23(日) 13:20:41 ID:???
>>657
1項目だけに絞っても大して時間が変わりません。。
とりあえずUSING(address_id) の後ろに GROUP BY id
を付けたら、半分ぐらいの秒数にはなりました。
>>658
UNION ALLにすると、余計重たくなっているような気がします。
あと、sort_buffer_sizeは1Mでtmp_table_sizeは100Mにしています。
>>661
GROUP BY idをそれぞれのSELECTに付けたら
半分ぐらいの秒数になりましたが、
[Extra] => Using temporary; Using filesort が表示されるようになりました・・。

667 :NAME IS NULL:2007/12/23(日) 16:36:22 ID:???
where used; ってどういう意味?

668 :NAME IS NULL:2007/12/23(日) 16:46:30 ID:???
ググレカス

669 :NAME IS NULL:2007/12/23(日) 16:49:51 ID:wHJQxIfX
質問です。
MySQL 4.1.20 と PHP 4.3.9 がインストールされている共用レンタルサーバで、
文字コードが EUC で記述されている PHP を稼動させています。
この PHP で EUC のデータベースを作成し、そこに同じく EUC で日本語データを格納しているのですが、
このデータを mysqldump にてダンプする際に起きる文字化けに悩まされています。
現在の MySQL の文字コード設定は以下のようになっています。

character_set_client = utf8
character_set_connection = utf8
character_set_database = ujis
character_set_results = utf8
character_set_server = latin1
character_set_system = utf8

更に my.ini もしくは .my.cnf は使用できず、データベースも EUC から UTF8 などに
変更することができない状況下となっています。
この環境下で文字化けさせずに mysqldump でデータをダンプさせることは可能でしょうか?

ちなみに mysqldump に--default-character-set=(色々な文字セット名や binary など)、
--skip-set-charset などのオプションを付加してみましたが失敗に終わりました。
どなたかご教示ください。よろしくお願いします。

670 :NAME IS NULL:2007/12/23(日) 17:06:11 ID:???
どうして、MySQLでは ORDER BY で複数の要素を指定すると
インデックスが効かなくなってしまうのでしょうか?
プログラマの能力に限界があるということですか?

671 :NAME IS NULL:2007/12/23(日) 22:55:18 ID:???
>>665
Prepared Statement

672 :669:2007/12/24(月) 01:46:27 ID:???
>>669 への自己レスです。
mysqldump に「--compatible=mysql40 --default-character-set=latin1」
オプションをつける事で解決できました。
10日以上悩んでググってやっと解決できました。
ちなみに >>579 の質問も私ですが、
PHP を使って同様の処理を行うことで回避しました。

673 :667:2007/12/26(水) 00:02:45 ID:???
ググったけどわかんね

674 :NAME IS NULL:2007/12/26(水) 02:07:10 ID:kEQ0Ty0u
my-sqlサーバいれて起動がなぜかできないんだけどログ見てもわからない
071226 01:56:26 mysqld started
071226 1:56:26 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
071226 1:56:26 InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 36808.
InnoDB: Doing recovery: scanned up to log sequence number 0 43655
071226 1:56:26 InnoDB: Starting an apply batch of log records to the database.
..
InnoDB: Progress in percents: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 7
5 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
071226 1:56:26 InnoDB: Started; log sequence number 0 43655
071226 1:56:26 [ERROR] Fatal error: Can't open and lock privilege tables: Table
'mysql.host' doesn't exist
071226 01:56:26 mysqld ended

なんかロックされてるなにかがあるみたいだけど回避する方法とかあるなら教えてくださいませ orz

675 :NAME IS NULL:2007/12/26(水) 04:32:24 ID:???
>>667
これ読んでも分からん?
http://dev.mysql.com/doc/refman/5.1/ja/explain.html

>>670
効くと思うけど。

>>674
InnoDBは正常
| 071226 1:56:26 [ERROR] Fatal error: Can't open and lock privilege tables: Table
'mysql.host' doesn't exist
権限テーブルが無いって書いてある。
mysql_install_dbしてないんじゃない?

676 :NAME IS NULL:2007/12/26(水) 09:30:54 ID:???
>>675
全文検索してもwhere usedは出てこないよ
using whereとは違うよね

677 :NAME IS NULL:2007/12/26(水) 10:57:54 ID:???
using whereのことじゃない?
ソースのsql/sql_select.ccを読んだが、
where usedは出てこない。

678 :NAME IS NULL:2007/12/26(水) 11:41:58 ID:???
>>670
5.0より前はインデックスマージしないんじゃなかったっけ?
バージョンは?

679 :NAME IS NULL:2007/12/26(水) 14:55:23 ID:dqOx6InY
date型とtime型を結合してdatetime型を得るにはどうすればいいでしょうか

680 :NAME IS NULL:2007/12/26(水) 15:05:16 ID:???
mysql> create table dt (dt datetime, d date, t time);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into dt values (null, now(), now());
Query OK, 1 row affected (0.00 sec)

mysql> select * from dt;
+------+------------+----------+
| dt | d | t |
+------+------------+----------+
| NULL | 2007-12-26 | 15:00:25 |
+------+------------+----------+
1 row in set (0.00 sec)

mysql> update dt set dt = d + interval t hour_second;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0

mysql> select * from dt;
+---------------------+------------+----------+
| dt | d | t |
+---------------------+------------+----------+
| 2007-12-26 15:00:25 | 2007-12-26 | 15:00:25 |
+---------------------+------------+----------+
1 row in set (0.00 sec)


681 :NAME IS NULL:2007/12/26(水) 15:08:53 ID:???
>>680
ありがとうございました!

682 :NAME IS NULL:2007/12/26(水) 15:33:56 ID:???
前からインデックスについて疑問に感じていることがあるのですが、
1,2,3,4..........と続いているindexに2を追加すると、
1,2,2,3,4.........と3以下全て並べ替えになると理解しているのですが、
そのような仕組みになっているのでしょうか?

もし、そうだとすると100万件のデータが入っているtableで、
データを追加する際に、最悪100回の並べ替え(位置をずらす処理)が発生して大変なことになると思っています。

将来膨大なデータ件数になることが予想されるtableにindexをつけるかどうかで迷っているので、
アドバイスを頂けないでしょうか?

683 :NAME IS NULL:2007/12/26(水) 17:10:55 ID:???
>>682
インデックスがそういう構造だと
検索にはあまり向かないだろう
単なるノベタンではなくて、挿入・削除が容易な
例えばツリー構造のようになっているのだろう
安心してインデックス張るよろし
つか張らないと遅いでしょ

684 :NAME IS NULL:2007/12/26(水) 17:41:21 ID:???
>>682
そのレベルだとまずbtreeについて勉強しろ。


685 :NAME IS NULL:2007/12/27(木) 04:10:23 ID:v5TSL/Qu
>>675
ありがとうございます。mysql_install_dbでOKでしたorz


686 :NAME IS NULL:2007/12/27(木) 18:05:22 ID:???
SQL文が書かれたテキストファイル(hoge.sql)をインポートしたいのですがどうすればいいでしょうか?

以下のようにやってみたんですが、エラーになります。
mysqlimport -p --local hoge hoge.sql
*hogeがデータベース名です。

mysqlimport: Error: Table 'hoge.hoge' doesn't exist, when using table: hoge



687 :NAME IS NULL:2007/12/27(木) 18:13:52 ID:???
mysqlimportはCSVファイルなどを流し込むツールであって、
SQLを流し込むツールではないぞ。

$ mysql hoge < hoge.sql

688 :NAME IS NULL:2007/12/27(木) 18:26:21 ID:???
>>687さん
即レス、ありがとうございます!
本当に助かりました
ありがとうございます

689 :NAME IS NULL:2007/12/27(木) 22:03:30 ID:???
MySQL 5.1 で、MyISAM をメインに使っているのですが、
稼働状態でデータのバックアップをとるときは、
マニュアルに載っている
mysqldump --all-databases
が一番早いのでしょうか?

もっと良いバックアップの方法があれば教えてください。


690 :NAME IS NULL:2007/12/28(金) 00:16:46 ID:???
optとかでいいんじゃ

691 :NAME IS NULL:2007/12/28(金) 00:52:11 ID:???
>>690
kwsk!

692 :NAME IS NULL:2007/12/28(金) 01:53:48 ID:???
>>691
仕方ないからyahooで調べてみた
http://www.google.com/search?q=mysqldump+opt
ここのサイトに詳しく載ってたよ
サンプルもいくつかあった

693 :NAME IS NULL:2007/12/28(金) 14:49:41 ID:C3g8Iqj8
>>686 >>688
昨日の俺がいたので、記念真紀子

694 :NAME IS NULL:2007/12/29(土) 07:39:47 ID:???
>>692
mysqldumpを使うというのは最適解なのですね。
--opt試してみます。ありがとう。

695 :NAME IS NULL:2007/12/29(土) 11:34:53 ID:???
MyISAMで一番速いのは
LOCK TABLES⇒FLUSH TABLES⇒ストレージやLVMのスナップショット機能
だと思う。

696 :NAME IS NULL:2007/12/29(土) 14:46:39 ID:gk+6HmZs
最近はじめたんですが、dateを入れるカラムって、格納する値(2007/12/30)を
いちいちsql文の中に用意してinsertなりするしかないんでしょうか?
その他のカラムが更新されたときに、自動的に日付カラムが更新されるような
仕組みってないですか?

697 :NAME IS NULL:2007/12/29(土) 15:42:00 ID:???
>>696

トリガを使用
http://dev.mysql.com/doc/refman/5.1/ja/triggers.html

698 :NAME IS NULL:2007/12/29(土) 19:48:51 ID:???
>>696
あるいはtimestamp型を利用するとかかな。

699 :NAME IS NULL:2007/12/30(日) 02:48:15 ID:T2zYh9sT
select aaa.* from aaaINNER JOIN test_tb USING(aaa_id)
select aaa.* from aaaINNER JOIN test_tb USING(aaa_id) GROUP BY aaa.aaa_id

aaaテーブルとtest_tbにはそれぞれ3万レコード入っているとします。
上段の方を実行すると、0.1秒ぐらいで表示されるのですが、
下段を実行すると、サーバがダウンするぐらい表示に時間がかかります。

どうしてGROUPを入れるとこれだけ実行時間に差が出るのでしょうか?

700 :NAME IS NULL:2007/12/30(日) 05:18:06 ID:???
変更された実行計画に対して適切な索引が無いから
かなー

701 :NAME IS NULL:2007/12/30(日) 09:06:39 ID:???
そういうときはEXPLAINして違いを見ようぜ


702 :699:2007/12/30(日) 15:15:42 ID:???
理由が分かりました。結合先のtest_tbのaaa_id中に
重複した値があったのが原因のようです。

今まで勘違いしていたのですが、一意のデータが多いほど
結合時の読み込みも早いんですね。前は逆だと思ってました・・。

703 :NAME IS NULL:2007/12/30(日) 15:27:52 ID:???
>>697-698
ありがとう 試してみます

704 :NAME IS NULL:2007/12/31(月) 15:35:52 ID:5qw/Iwgf
http://click.j-a-net.jp/1006827/223686/

705 :NAME IS NULL:2008/01/04(金) 14:05:51 ID:???
Mysql 5.0.45
alter table hogehoge change 〜 でカラムをリネームしようとすると
ERROR 1025 (HY000) Error on rename of '.\detabase\#sql-244_7' to
' .\database\hogehoge' (error: 150)

というエラーメッセージが出るんですけど、ひょっとしてプライマリキーに
なってたり外部制約に使われているカラムって名前の変更が出来ない?


706 :NAME IS NULL:2008/01/04(金) 23:33:10 ID:FJkIdSjB
5.1がインストールできない
5.0.1?まではなんとか入れれたのだが・・・・
ちなみにMacOSX10.4使用

同じような症状の人いる?

707 :NAME IS NULL:2008/01/05(土) 02:55:27 ID:???
メールサーバを管理しているのですが、
監視ログにmysqlのエラーで

Too many connections

とメールが来ました。
mysqlが外部から待ちかまえるデーモン数を少し増やして様子をみたいのですが、
どこで調整できるのでしょうか?

708 :707:2008/01/05(土) 03:02:23 ID:???
補足です。
バージョン5.0です。

709 :NAME IS NULL:2008/01/05(土) 03:08:18 ID:???
A.2.6. Too many connections エラー
MySQL に接続しようとして Too many connections エラーが発生する場合は、すでに mysqld サーバに接続している max_connections クライアントが存在しています。

デフォルト(100)より多い接続を行う場合は、max_connections 変数の値を 100 より大きくして、mysqld を再起動する必要があります。

実際は、mysqld では(max_connections+1)クライアントの接続が許可されています。最後の接続は、SUPER 特権のあるユーザ用に予約されています。
一般ユーザにこの特権を与えないことによって(一般ユーザにこの特権は必要ありません)、
この特権のある管理者はログインして、SHOW PROCESSLIST を使用して問題を見つけることができます。
See 項4.6.8.6. 「SHOW PROCESSLIST」。

MySQL 接続の最大数は、スレッドライブラリが特定のプラットフォームでどの程度まで有用であるかに依存します。
Linux または Solaris では、使用している RAM のサイズと、クライアントが何を実行しているかによって、500 ? 1000 の同時接続をサポートできます。


710 :707:2008/01/05(土) 03:29:23 ID:???
ありがとうございます。
早速変更して様子をみたいと思います。
思ったより、スパムの接続数が多いみたいです。

711 :NAME IS NULL:2008/01/05(土) 16:03:40 ID:yZZDqu/Q
誰か助けて\(^o^)/
1 - can't create/write to file 〜ってでてきてエクスポートできません

過去ログやMyNA、検索してでてきたやつやってみたけど駄目でした
ちなみに使ってるのはnavicat8です(オプション設定ファイルの場所わからない\(^o^)/

712 :NAME IS NULL:2008/01/05(土) 16:57:52 ID:5Gpulnqz
すいません。バカな漏れをすくってください。
以前、MySQLをインストールして、失敗し、やむなく消去して。
XAMPPをいれたんですけど。
MySQLにつなぐと。
access violation なんちゃら〜libmysql.dll〜なんちゃら
と、何回もエラーがでて、そのうち操作不能になります。
コマンドでsc delete MySQLとかやってみたり、
管理ツールとかもしてみたんですが、
なおりません。
ともだちに聞いたら、クリーンインストールしかないんじゃない
とのことなんですが。
ちょっと消しちゃまずいものもあったりするんで。
バックアップに不安感もあって、ふみきれません。
どうか、たすけてください。

あと、5日前くらいからはじめたばかりなので。
初心者すぎて、書いてることも、自分でもよくわかりきってないんで。
そのへん、ほんとうに、すみません。

713 :NAME IS NULL:2008/01/05(土) 17:00:41 ID:???
窓からパソコン投げれば良いと思う

714 :NAME IS NULL:2008/01/05(土) 17:04:38 ID:5Gpulnqz
>>713
そうとうそういう衝動おさえてますww


715 :NAME IS NULL:2008/01/05(土) 17:24:20 ID:???
親切な自分がいい方法を教えてあげよう。
お年玉で新しいPCを買え(w


716 :NAME IS NULL:2008/01/05(土) 17:34:51 ID:5Gpulnqz
>>715
ききたくなかったwwww
そのもっとも正論を、ききたくなかったww

717 :NAME IS NULL:2008/01/05(土) 18:05:21 ID:???
>>712
XAMPPをまずアンインストールする

次に、スタートメニューから検索を選んで
ファイルとフォルダすべて を選び、libmysql.dllを探す
見つかったlibmysql.dllは全て不要なので 全部ごみ箱に入れる

そのあと、XAMPPをもう一度インストールする



これで多分直るので、ちゃんと動いたのを確認したら
Cドライブをフォーマットして窓からPCを投げ捨てろ

718 :NAME IS NULL:2008/01/05(土) 20:42:54 ID:Ible2iRH
http://click.j-a-net.jp/1006827/223692/


719 :NAME IS NULL:2008/01/05(土) 21:35:56 ID:???
mysqlでPostgreSQLの
Explain analyzeと同じような結果を得ることはできないでしょうか?

phpでSelect文の実行速度をmysqlから得たいのですが、
その方法がわかりません。


720 :NAME IS NULL:2008/01/06(日) 00:57:20 ID:2gK1qWP1
>>717さん。
本当に感謝します。
今、ガチで地面に頭つけて土下座しました。
これは、完全に本当です。ありがとうございます。
そして>>718さん。
すかさずのジョーク、笑わせていただきました。
ありがとうございます。

721 :NAME IS NULL:2008/01/06(日) 06:47:17 ID:xNMZbDGr
あるテーブルが現在100万件ほどあるのですが、
時間によっては検索・更新が遅くなります。
インデックスも貼っているのですが、
これから1000万件、2000万件と増えると限界もあるのではと思っています。

同じテーブルを複数作って運用することも考えているのですが、
どう思いますか、設計としては汚いとは思うのですが、
この方式であれば、これから増えていってもとりあえず心配はないと思っています。

ex) T_SAMPLE_1, T_SAMPL_2, T_SAMPL_3.... (同じ構造のテーブルを適宜増やすやり方です)

722 :NAME IS NULL:2008/01/06(日) 10:46:00 ID:???
そもそもの設計が間違ってるんじゃね? としかいいようがない。
EXPLAINしてみた?

ちなみにインデックス張ってると更新は重くなるよ。


723 :NAME IS NULL:2008/01/06(日) 13:42:15 ID:???
インデクスがB-Treeなことを考えると、論理的には100万件でも2000万件でもペナルティに大した違いは無いはず。


724 :NAME IS NULL:2008/01/06(日) 14:12:34 ID:Mrg050LO
SELECT id FROM test WHERE id=1 or id=2 or id=3

として、IDが1か2か3のデータを出したいと思います。
上記のSQLなら3つのレコードがヒットします。

idを検索する数だけid=を付けるのは変だと思うのですが、
どういう書き方をしたらいいのでしょうか?

725 :NAME IS NULL:2008/01/06(日) 14:46:54 ID:???
SQLの勉強しろよ。
IN を使えばいいでしょ。


726 :NAME IS NULL:2008/01/06(日) 17:57:57 ID:???
複数のカラムでOrder Byするとインデックスが無視されてしまいますが
どうやったって複数の項目でソートせざるを得ないときはどうしますか?

単純な数値のキー二つなら足したりかけたりして一つのカラムに
まとめたりすることも出来ますが、日時と数字だったりすると
相当面倒くさいです。ソートだけに。

727 :NAME IS NULL:2008/01/06(日) 18:09:16 ID:???
複数の項目のインデックスを張る

728 :NAME IS NULL:2008/01/06(日) 18:12:17 ID:???
>>725
すみません。勉強不足でした。
INで出来ました。ありがとうございました。

729 :NAME IS NULL:2008/01/06(日) 19:40:36 ID:???
>>721
百万件以上、数百万件くらいになると、どう正規化しても遅くなる。
あとメンテナンス性も落ちる。
後半に書いているように、データの水平パーティショニングが必要。
大規模なMySQL運用してるところならどこでもやってる。
(例: mixi、Yahoo! J、livedoor、live Journal)

730 :NAME IS NULL:2008/01/06(日) 21:56:49 ID:???
>>729
参照主体ならレプリケーションでも十分対応できるんじゃね?
更新主体だとそうもいかんけど。

5.1使うとその辺楽できていいよね。


731 :NAME IS NULL:2008/01/06(日) 22:23:46 ID:???
>>722>>723 >>729>>730
アドバイスどうもありがとうございました。
EXPLAINで最適化をしたのですが、どうしてもスピードが劣化してしまします。
このペースで1000万件良くと大変なことになりそうなので、策を考えていました。

>>729さんに教えて頂いたパーティション初耳だったのですが、マニュアルを見たらすごく便利ですね。
私は同じテーブルを複製してPGで参照テーブルを決定することを考えていたのですが、
DB側で透過的に負荷分散してくれるこのやり方は最高です。

いま問題になっているのは、会員の購入履歴みたいなもので、会員IDと購入品目などが並んでいます。
会員IDにINDEXを指定していて、会員IDをキーに購入履歴を参照しています。(実際には条件がもう少し複雑です)

このような用途で、会員別にパーティションにしたいのですが、
その場合は、「15.2.3. HASH 分割」がベストということで宜しいでしょうか?
http://dev.mysql.com/doc/refman/5.1/ja/partitioning-hash.html

732 :NAME IS NULL:2008/01/06(日) 22:27:33 ID:???
>>730
アドバイスありがとうございました。
>参照主体ならレプリケーションでも十分対応できるんじゃね?
残念ながら両方なんです。
参照もしながら更新もするテーブルでして、参照も更新も半々で、
それでいてデータ数も2年後には1000万件いく勢いなので・・・

733 :NAME IS NULL:2008/01/06(日) 22:54:32 ID:???
>>731
思うんだけど、購入履歴は「過去○件まで」として
それ以上は削除したら良いんじゃないか?
で、購入履歴からこれまでの注文金額を割り出しているのなら
それを止めて、購入合計金額テーブル+購入履歴にするとか。

俺はそうしてるよ。じゃないと、履歴のログがたまりすぎる。

734 :NAME IS NULL:2008/01/06(日) 23:19:24 ID:???
>>733
返事ありがとうございます。
そうですね、確かにそうしたいのですが、そのテーブルが過去の取引記録を修正する必要がある特殊なもので、
更にその取引履歴がないと他の処理の際に非常に困るケースがありまして、
そのテーブルを今の形以上に最適化?するのが難しいんです。

なので、将来的にそれが1億件とか溜まったらどうするの?って問題もあるのですが、
それに対応するのは、同じ構造のテーブルを複製して負荷分散するしかないのかなぁ、と思ったのが最初の考えだったんです。

735 :NAME IS NULL:2008/01/07(月) 01:36:20 ID:???
>>734
例え1億件溜まったとしても、それに全件対象で
検索なんてまずしないでしょうし、回避方法いくらでもあるでしょう。
しかもその9割以上はもう更新されない固定データのはずです。

736 :NAME IS NULL:2008/01/07(月) 01:38:54 ID:???
パーティションは5.1新機能で、5.1はまだβなので
使うなら人柱の覚悟が必要。
mixiとかは自前でパーティション相当の機能を実装してる。

737 :NAME IS NULL:2008/01/07(月) 03:53:34 ID:???
最適化云々の前に、どう考えても設計にミスがあると思うんだが・・。
mixiほどの会員数でもないだろうし。せいぜい1万人前後だろ。

738 :NAME IS NULL:2008/01/07(月) 03:54:51 ID:???
単位は人じゃないと思う

739 :729:2008/01/07(月) 11:54:16 ID:???
>>731
まいったな。
5.1新機能の『水平パーティショニング』じゃなくて、MySQLサーバ複数に
同じテーブル用意して、プログラムで参照先を変える、
手動(?)水平パーティショニングのつもりで書いた。
その場合、ユーザテーブルにデータクラスタidのカラムを増やすことになる。
736の言うように、5.1はまだRC1だからなぁ。

>>737
会員数じゃない。

740 :NAME IS NULL:2008/01/07(月) 19:13:48 ID:???
MySQL Administratorをインスコしたんですが、
Create New Procedure/functionが選択できない状態です。

使うにはなんか条件あるんでしょうか

741 :NAME IS NULL:2008/01/07(月) 20:08:35 ID:rP9QoVfq
ちなみにMysqlのヴァージョンは2.0.27です。

742 :NAME IS NULL:2008/01/07(月) 20:59:23 ID:???
>>741
   ∩___∩         |
   | ノ      ヽ         |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       J
 彡、   |∪|   |
/     ∩ノ ⊃  ヽ  
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /


743 :NAME IS NULL:2008/01/07(月) 21:35:15 ID:???
3.xというのは時たま見かけるけど、2.xなんてのは初めて見た w

744 :NAME IS NULL:2008/01/08(火) 11:57:35 ID:0aeiDUDX
MySQLをインストールしたのですが、
080108 11:52:04 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
080108 11:52:04 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/var/ is case insensitive
/usr/local/mysql/libexec/mysqld: Table 'mysql.plugin' doesn't exist
080108 11:52:04 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
080108 11:52:04 InnoDB: Started; log sequence number 0 46409
080108 11:52:04 [Note] Recovering after a crash using mysql-bin
080108 11:52:04 [Note] Starting crash recovery...
080108 11:52:04 [Note] Crash recovery finished.
080108 11:52:04 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
080108 11:52:04 mysqld_safe mysqld from pid file /usr/local/mysql/var/nomade2.local.pid ended
というメッセージがでてshutDownしてしまいます。
どなたか解決法ごぞんじないですか?

745 :NAME IS NULL:2008/01/08(火) 13:14:22 ID:???
>>744
>>675

746 :744:2008/01/08(火) 13:22:24 ID:0aeiDUDX
/usr/local/mysqlのなかをみてみるとscriptフォルダが入ってない・・・
やっぱりインストール途中で終わっちゃったのかな?

747 :744:2008/01/08(火) 13:27:20 ID:0aeiDUDX
ごめん。勘違い。
ご指摘通りinstall_dbで大丈夫になりました。
お騒がせしました。

748 :NAME IS NULL:2008/01/08(火) 19:06:40 ID:???
mysqlを3.23→4.1.x→5.045にアップデートしたのですが
--skip-grant-tablesをオプションをつけないと
起動しても今までのがうまく動きません
多分ユーザーパスワード関連の問題だとは思うのですが・・・

ユーザーテーブルの拡張は4.1系にアップデートした時に変換しました

--skip-grant-tablesを付けずに起動させて
ちゃんと動くようにするにはどうすればいいのでしょう?
因みに1ユーザーだけパスの変更ができないのがあります
あと、[mysqld]にold-password=1を指定してみてもだめでした

749 :NAME IS NULL:2008/01/08(火) 23:44:58 ID:???
>>748
「うまく動きません」の内容を詳しく。

750 :NAME IS NULL:2008/01/09(水) 02:22:19 ID:???
>>741
5.0.27でした。。。

751 :748:2008/01/09(水) 06:58:53 ID:???
動かないの内容ですが・・・
具体的に言うと接続できないです

で、アレから色々やって--old-passwordオプションをつけて起動したら
接続できました

しかし新しいパスワードで保存してあるユーザーは接続できませんでした
こういうものなのでしょうか?



752 :NAME IS NULL:2008/01/09(水) 07:09:27 ID:???
>>751
だから、接続できない時のエラーは?

753 :NAME IS NULL:2008/01/09(水) 07:36:23 ID:???
ログファイルにはでないのですが返されたエラーは
Client does not support authentication protocol
みたいな感じでした


754 :NAME IS NULL:2008/01/09(水) 16:41:50 ID:???
質問です

1 --------
2 --------
3 --------


このようにインデックスのついたカラムをdelete文で削除すると
インデックスの数字が空いたままカウントされていくのですが、
自動的に詰めてくれるようにはできないのでしょうか
(例:インデックス3を削除した後にインデックス4のものが3につめてくる)

755 :NAME IS NULL:2008/01/09(水) 17:36:30 ID:???
微妙に用語が怪しいので
現象を正しく理解しているかどうか不安だが
連番を保持しているカラムの値は
レコードの挿入・削除により動的には変更されない
そういう値は通常はDBに持たせずプログラムで生成する

756 :NAME IS NULL:2008/01/09(水) 17:37:26 ID:???
トリガ仕込んでおけばできるかもしれないが、
あんまりやらないだろうなあ

757 :NAME IS NULL:2008/01/09(水) 19:54:54 ID:???
大文字だけが含まれるIDを抽出したいのですが

select id from database REGEXP [A-Z]*

とかでも全て出てきますorz
大文字だけが含まれる、というクエリが間違っているのでしょうか?
REGEXPを使うんですよね?
でも正規表現がorzなので・・・。

758 :NAME IS NULL:2008/01/09(水) 23:19:28 ID:???
>>753
クライアントコマンド/ライブラリのバージョンが古いんじゃないかと。

759 :NAME IS NULL:2008/01/09(水) 23:21:52 ID:???
>>757
いや、それ文法エラー。

select id from tablename where columname regexp '[A-Z].*'

だと、どう?

760 :NAME IS NULL:2008/01/10(木) 00:33:46 ID:???
>>754
ちゃんと詰めて考えれば、その仕様自体に無理ある。
DBでは欠番してる事も情報の1つなんだよ。

761 :NAME IS NULL:2008/01/10(木) 02:12:00 ID:???
9時間前の日時をdatetime型に書き込もうと
INSERT INTO tbname value(NOW()-090000)
としてもデフォルトの0000-00-00 00:00:00となってしまいます。
SELECT NOW()-090000
だと正しく表示されるのですが、何がいけないのでしょうか?

762 :NAME IS NULL:2008/01/10(木) 02:55:35 ID:???
>>761
SELECTの結果をINSERTすればいいじゃん

763 :NAME IS NULL:2008/01/10(木) 07:26:01 ID:???
>>761
now()-090000 で正しく表示されているというのは気のせい。
subdate(now(), interval 9 DAY_HOUR) を使え。

764 :NAME IS NULL:2008/01/10(木) 08:59:06 ID:???
オライリーのMySQL本でもauto_incrementの数はつめるなって
書いてあるな
興味があれば参照してみ

765 :NAME IS NULL:2008/01/10(木) 10:52:40 ID:???
>>757
その正規表現はいろんな点で間違ってます。
正規表現スレで聞くべきだと思うけど、

1. 先頭から末尾まで大文字だけが含まれる
2. 大文字以外が含まれる、の否定

のどっちかにしないとダメじゃね?


766 :NAME IS NULL:2008/01/10(木) 17:04:40 ID:???
[A-Z]+

767 :NAME IS NULL:2008/01/10(木) 23:31:51 ID:???
^[A-Z]+$

768 :NAME IS NULL:2008/01/11(金) 02:16:26 ID:???
[T_T]<ありがとうございました

769 :NAME IS NULL:2008/01/11(金) 09:03:33 ID:???
a,b,cの3つのカラムがあるテーブルhogeで
SELECT * FROM hoge WHERE a<条件 ORDER BY b,c;
みたいな検索を高速化させる方法は MySQLにありますか?
ありませんよね。

770 :NAME IS NULL:2008/01/11(金) 09:30:57 ID:???
うん

771 :NAME IS NULL:2008/01/11(金) 11:27:22 ID:???
うん?

772 :NAME IS NULL:2008/01/11(金) 19:11:00 ID:???
MySQLで
正規表現してマッチした文字を入れたいのですがどうすればいいでしょうか?

CREATE FUNCTION hoge (
f_str TEXT,
) RETURN VARCHAR
BEGIN
declare s_str INT DEFAULT NULL;
// f_strに/#([0-9]{3})#/ が入っていたら
// ([0-9]{3})の値を抜き出して
SELECT `hoge` FROM hoge_temp_tbl WHERE num_id = ([0-9]{3}でマッチした値)
END

簡単に書くと
長文が入った変数f_strをストアドに投げて#([0-9]{3})#にマッチするキーの値をDBから取りたいのです
PHP側で置き換えするとその都度DBと通信しなくてはいけないので遅くなると思いこの方法が出来ないか、と考えてます、

MYSQLのバージョンは
5.1です

773 :NAME IS NULL:2008/01/11(金) 21:09:03 ID:???
update table_n SET point=( select count(別のテーブル) from 〜〜〜) where 〜〜〜

pointにcountの数値を入れてupdateしたいのですが
Subquery returns more than 1 rowとでてエラーがでます。
()の前にANYなどをいれても別のエラー(おそらく文法エラー?)がでます
pointはint型です

やりたいことは   あるテーブルのレコードの値を別のテーブルのcountで求めた値を入れたいのですが…


774 :773:2008/01/11(金) 21:34:39 ID:???
ごめんなさい、自己解決しました…
ただのupdateの文法ミスでした。余分なものが多すぎだorz

775 :NAME IS NULL:2008/01/13(日) 06:58:13 ID:???
テスト

776 :NAME IS NULL:2008/01/13(日) 22:04:10 ID:???
列1、列2、列3・・・で列1+列2を一つのインデックスとして貼っているのですが、
列2のみに検索を掛ける場合に、列2だけのインデックスを作る必要がありますか?
宜しくお願いします。

777 :NAME IS NULL:2008/01/13(日) 22:42:41 ID:???
>>776
はい、必要あります

778 :NAME IS NULL:2008/01/13(日) 23:40:42 ID:???
>>777
アドバイスありがとうございます。
勉強になりました。
実は、phpadminでやると、↓のような警告メッセージがでてしまうので、気になっていました。
カラム `列2` に PRIMARY と INDEX のキーを両方とも設定するのはよしましょう。

検索条件別にインデックスを分けないといけないんですね。
どうもありがとうございました。

779 :NAME IS NULL:2008/01/14(月) 04:06:03 ID:???
MyIsamでデータをインサートする時、どの程度の確実性が保証されてるんですか?
一番知りたいのはInnoDBのトランザクション使用時と比べてです

780 :NAME IS NULL:2008/01/14(月) 12:38:44 ID:???
>>778
EXPLAIN した?
PRIMARY には INDEX いらんがな。

781 :NAME IS NULL:2008/01/14(月) 19:19:15 ID:k6NvIgLE
質問お願いしたいんですが、
何でGROUP_CONCATではlimitが利用できないんでしょうか?
limitを利用したのと同程度で済む代替手段はあるのでしょうか?

782 :NAME IS NULL:2008/01/14(月) 21:16:10 ID:???
>>781
え、できないの? できると思うけど。

783 :NAME IS NULL:2008/01/14(月) 22:07:57 ID:k6NvIgLE
>>782
レスありがとうございます。
Group_concatの構文って↓ですよね。
抽出して並べる値について、上位5件のものだけにしたい場合などにlimitが使えたら便利と思ったんですが、
普通にできるのでしょうか。

GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])

784 :772 :2008/01/16(水) 18:10:14 ID:???
宜しくお願いします。

785 :NAME IS NULL:2008/01/16(水) 23:10:36 ID:???
http://developers.slashdot.org/article.pl?sid=08/01/16/135243


786 :NAME IS NULL:2008/01/16(水) 23:31:06 ID:/Laf53wE
Sunになっちった

787 :NAME IS NULL:2008/01/16(水) 23:36:06 ID:???
http://blogs.mysql.com/kaj/sun-acquires-mysql.html/

788 :NAME IS NULL:2008/01/17(木) 01:18:09 ID:???
これで四大商用DBに仲間入りだな

789 :NAME IS NULL:2008/01/17(木) 01:57:33 ID:???
SAMJ? JAMS?

790 :782:2008/01/17(木) 02:10:31 ID:???
>>783
あ、そういうことか。
group_concat() の機能じゃないけど、group_concat() の結果を substring_index() してみるのはどうかな。
substring_index(group_concat(....), ',', 5) みたいに。

791 :NAME IS NULL:2008/01/17(木) 02:12:44 ID:???
Sun MySQL 三枚SQL

792 :781:2008/01/17(木) 02:55:23 ID:FXOK6V2i
>>790
レスありがとうございます。
MySQLについてあまり詳しくないのですが、
その方法だとソートする場合に,5番目以降の部分もソートしてしまって,
計算量が膨大になったりしないのでしょうか。

793 :NAME IS NULL:2008/01/17(木) 05:31:39 ID:h9UdFYyA
レプリケーション構成の時、スレーブDB自体を再起動する際は一度stop slaveを
かけた方が安全なんでしょうか?

794 :NAME IS NULL:2008/01/17(木) 05:40:46 ID:???
ずっとACCESSを使っていましたが、無料で使用できるということで、
MYSQLを今週から使い始めました。
ですが、SQLというのがイマイチよく理解できないのですが、
ある列の並べ替えをしたいときは、どのようなSQLをかけば宜しいのでしょうか?

SYAIN(社員用の管理テーブルです)
ID
NAME
ADDRESS
AGE
SYOZYOKU
STATUS
TM_SCORE

795 :NAME IS NULL:2008/01/17(木) 05:55:54 ID:???
>>794
その辺はSQL入門で最初に出くる基本事項ですので、
本やwebで一通り押さえてください。
ちなみにその場合は「ORDER BY」を使用します。

796 :NAME IS NULL:2008/01/17(木) 05:59:23 ID:???
>>794
例えば、NAMEを昇順に並べ替えるなら、こうすれば出来るよ。やってみて。
DELETE FROM SYAIN; SELECT * FROM SYAIN ORDER BY NAME;

797 :NAME IS NULL:2008/01/17(木) 06:08:57 ID:???
>>795>>796
朝早くから、アドバイスありがとうございました。
教えられたSQLでやってみたのですが、何も表示されませんでした。
ちなみに、XPでWINDOWS版でやっています。バージョンはわかりません。
おすすめのHPとかありますか?

798 :NAME IS NULL:2008/01/17(木) 06:12:08 ID:???
ひ、ひでーw

799 :NAME IS NULL:2008/01/17(木) 07:22:19 ID:???
>>794
まれに見る超初心者。
スレで聞くより入門書買って読んだ方が早いよ。

>>796
> DELETE FROM SYAIN;
>>797
> 教えられたSQLでやってみたのですが、何も表示されませんでした。

ホントに全レコード消しちゃったのね・・・。南無。

800 :NAME IS NULL:2008/01/17(木) 07:23:20 ID:???
format c: [エンター] をなんの疑いもなく実行してしまう奴

801 :NAME IS NULL:2008/01/17(木) 07:49:58 ID:???
>>799
そうですね。近くに本屋がないので、どうしようかと思っていまして、
何かお勧めの本とかありますか?

で、すみません、あれから再起動したりして何度か試したのですが、
レコードが表示されなくなってしまったのですが、
これはどうしたら宜しいでしょうか?
前にウマくいっていたSQLも実行できないのですが・・

802 :NAME IS NULL:2008/01/17(木) 07:52:42 ID:???
MySQL史上最大級のニュースがあったというのに、
このスレがこんなに平穏とは、それだけMySQLユーザーが増えたって事かね。

803 :NAME IS NULL:2008/01/17(木) 07:53:57 ID:???
データベースはメンテナンスが大事だから
SQLを実行した後に>>796を実行しておいた方がいいよ。

804 :NAME IS NULL:2008/01/17(木) 07:55:48 ID:???
>>802
何が変わるってわけでもないし。 ライセンス形態が変わるってなら大ニュースだが

805 :799:2008/01/17(木) 08:04:00 ID:???
>>801
何歳?小学生ぐらい?
DELETE FROM SYAIN; を実行したことで全レコードは消えて、
もう取り戻せないから、諦めて再入力するしかない。
本は>>1-2ぐらいを見ればリンクがある。

それからGoogleという便利な検索エンジンがあるから、ちゃんと使おうね。
http://www.google.co.jp/

806 :NAME IS NULL:2008/01/17(木) 08:05:44 ID:???
これが釣りではなかったとしたら
とんでもないゆとりだなw

807 :NAME IS NULL:2008/01/17(木) 08:07:11 ID:???
>>802
開発者が増えて、ライセンスも緩和されるかもね。
でもって商用DBにしかない機能も実装されるだろうし、
いよいよDB2とOracleが追い詰められるのかも。

Sun、MySQLを買収へ
http://www.itmedia.co.jp/enterprise/articles/0801/17/news005.html

Sun Microsystemsは、オープンソースのRDBMS「MySQL」を開発するMySQLを
総額約10億ドルで買収することを明らかにした。
 Sun Microsystemsは1月16日、オープンソースのRDBMS「MySQL」を開発する
MySQLを総額約10億ドルで買収することを明らかにした。
買収は3月末をめどに完了させる予定。MySQLはIPOを待たずして買収されることとなった。
 MySQLが自社サイトに開設しているブログに、同社のコミュニティ担当バイスプレジデント、
カイ・アーノ氏がその旨を伝えるエントリを投稿したのとほぼ同時期に、
Sunからも正式なプレスリリースが出されている。
 カイ氏はエントリの中で、「オープンソースをよく理解しているSunがMySQLを買収したことは、
MySQLコミュニティーにとっても有益なものになる」と述べている。
 一方、Sunのジョナサン・シュワルツCEOも自身のブログでこの件について言及、
MySQLの顧客に対して買収の完了を待つことなくサポートサービスの提供を開始する予定であると述べた。
 MySQLについては、過去にOracleが買収を試みたことが知られている。
今回Sunが買収したことで、OracleやMicrosoft、
IBMなどとデータベース市場で争うための基盤をSunは手に入れたことになる。

808 :NAME IS NULL:2008/01/17(木) 08:15:18 ID:???
Sunに買収されてこれからどうなっちゃうの?と思ったが
別に悪いことじゃなさそうだな

809 :NAME IS NULL:2008/01/17(木) 08:22:52 ID:???
>>805
おいおい!!!!!ふじゃけんなよ。
人をはめておいて何説教してんだよ!!!
どうすんだよ。今日の2時までに資料作成しないといけないのに、
データ消えたって洒落じゃ済まされないよ。
おい、復活する仕方を教えろよ。何だよ、このスレ。まじ、死んでくれよ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

810 :799:2008/01/17(木) 08:32:36 ID:???
>>809
おいおい799と796は別人だよ。
親切にしてやったのに逆ギレとは。

811 :NAME IS NULL:2008/01/17(木) 08:34:23 ID:???
バックアップしてなかったら復活なんて無理だよ…

812 :NAME IS NULL:2008/01/17(木) 08:38:38 ID:ThKha1cM
SUNは技術者を買収したって解釈でOK?

813 :NAME IS NULL:2008/01/17(木) 08:38:45 ID:???
barkrayDBみたいな事になっちゃうのかね

814 :NAME IS NULL:2008/01/17(木) 09:08:32 ID:???
>>809
お困りのようなので、特別に教えます。
SQL文1本で復活することは可能です。

ただし、技術料として前金で10万円頂くことになります。
これでも相当安いです。同じスレの住民として特別ですよ。

それで、宜しければ上記のメールまで連絡して下さい。

815 :NAME IS NULL:2008/01/17(木) 09:11:33 ID:???
rollbackさせようとしてたりして

816 :NAME IS NULL:2008/01/17(木) 09:19:16 ID:???
さすがに自演の匂いがする

817 :NAME IS NULL:2008/01/17(木) 09:38:29 ID:???
朝から凄い自演釣りですね

818 :NAME IS NULL:2008/01/17(木) 12:57:17 ID:???
>>809
>何だよ、このスレ。
本来、日本最高級のMySQL技術者のみが集うスレですが、何か?

819 :NAME IS NULL:2008/01/17(木) 14:40:21 ID:???
おお >>809よ しんでしまうとはなさけない

820 :NAME IS NULL:2008/01/17(木) 15:07:43 ID:???
買収されたことで、mysqlが本丸の技術者の需要も増えそう

821 :NAME IS NULL:2008/01/17(木) 17:01:58 ID:???
MySQL が Oracle や IBM を追い詰めるって妄想にもほどがあるw

Sun の狙いは現行 MySQL で構築してあるシステムを Sun のハード & ソフトに置き換えること。
そこそこ規模の大きいとこは SPARC + Solaris + Oracle でリプレースすること。
つまり現 MySQL ユーザの取り込みだよ。Sun はそういう会社。それ以外に興味はない。

過去に Sun に買収されたところがどんな冷や飯を食ったか (あるいはお亡くなりになったか)、
Cobalt を例に挙げよう。

1. Cobalt 買収。これで Sun にも I/A + Linux の販売基盤ができたとメディアが騒ぐ  ← 今の MySQL
2. Sun、サポート体制配備。客とのコネ作り。
3. Cobalt 塩漬け開始。ほぼ同時に Sun が I/A ハード販売開始。
4. 2 世代も古くなればさすがに客も Sun の I/A、SPARC サーバへ乗り換えはじめる。
5. Cobalt 終了のお知らせ。


822 :NAME IS NULL:2008/01/17(木) 17:10:05 ID:???
MySQLのQueryBrowserで
カラムに日本語を使っていると
Executeを入力するする部分がバグるんですけど
解決法はあるのでしょうか?


823 :NAME IS NULL:2008/01/17(木) 17:14:37 ID:???
CobaltはSunに買収された時点で終わったとオモタ
MySQLはそうならないで欲しい
最悪時は第三者がGPL版ベースで再スタート?

824 :NAME IS NULL:2008/01/17(木) 17:22:13 ID:???
OpenOfficeやNetBeansみたいに細々と続けてくれればそれで文句ないよ

825 :NAME IS NULL:2008/01/17(木) 17:57:01 ID:???
>>821
全く同感
そういえばCobaltってあったなぁっていう・・・

826 :NAME IS NULL:2008/01/17(木) 17:59:07 ID:???
>>822
文字コードは?
設定は?
バージョンは?
接続クライアントは?

827 :NAME IS NULL:2008/01/17(木) 18:00:51 ID:???
>>823 >>825
MySQL終わったな

828 :NAME IS NULL:2008/01/17(木) 18:13:52 ID:???
でもMySQLが脂肪したらpostgresに逃げられるだけじゃないの?
取り込みなんてできないだろ

829 :NAME IS NULL:2008/01/17(木) 18:46:59 ID:???
Cobaltが終わったからMySQLが終わるって? おまえらアホだろ

830 :NAME IS NULL:2008/01/17(木) 18:54:07 ID:???
MySQL ユーザが PostgreSQL に流れてしまったらいやだ!
MySQL を Oracle や DB2 に匹敵するくらい育てなければ!!

これは単なるフリーク的な発想なだけであって、Sun がそんなこと考えるわけないじゃん。
買収額からは長期戦略の構えのようには見えん。人材と中規模〜大規模の優良客だけ
さっさと取り込んで、自分らだけで何とかできる規模の安い客はどこへでもご自由にどうぞ?
オプソあるでしょ? と、まぁ今までの Sun の対弱買収を考えるとこれが定石。

つか、MySQL を育てたいと Sun が本気で考えてるなら、買収じゃなくて大量の自社エース級
社員をコミュニティに派兵する形態をとってる。

一応 Sun もオープンなイメージで売ってる会社だからオプソの形態は無くさないだろう。
ただコミュニティ無視していきなり 「Sun 版無料 MySQL です。これが公式版です。」 と
やらかす可能性は十分にある。てか過去に Linux 用の Java でやった。

831 :NAME IS NULL:2008/01/17(木) 19:08:53 ID:???
ちなみに Cobalt の買収額 20 億ドル、MySQL は 10 億ドルな。

832 :NAME IS NULL:2008/01/17(木) 19:11:41 ID:???
\ヽ, ,、
_  `''|/ノ
\`ヽ、|
 \, V
    `L,,_
    |ヽ、)                ,、
   .|                   ヽYノ
   /                     r''ヽ、.|
  /        ,.. -──- .、    `ー-ヽ|ヮ
 .|      , ‐'´   __     `ヽ、  `| 
  |    / , ‐'"´       ``''‐、  \  |
  |   / /             \ ヽ |
  ヽ,  y'   /` ‐ 、    ,.. -'ヘ   ヽ. }ノ
   ヽ,'     /   /`,ゝ' ´     ヽ   Y.
.    i    ,'     { {        ヽ   `、
    l    ,イ─- 、.._ ヽ ,, _,.. -─:}   !
.    |  r‐i| ー=ェェ:ゝ ,.∠ィェェ=ー' |r 、.  l
   |  {ト」l|.      : | "    ``: |!トリ  |
.  │  ヽ、|      ;.」_      |'ソ    !
.  │     ヽ     r──ッ    /ノ    |
    |      lヽ    ̄ ̄     / イ    │
.    !    丶ヾヽ    ~   , ' ノ │   !
    ト.    ミ.ゝ ヽ.____./  /  l   /
    ヽ  ヽ           イ ,' / , '       ┼ヽ  -|r‐、. レ |
     \.             ノレ'/         d⌒) ./| _ノ  __ノ

833 :NAME IS NULL:2008/01/17(木) 19:29:44 ID:???
カオスってきました

834 :NAME IS NULL:2008/01/17(木) 19:38:34 ID:???
なあに、昔に戻るだけさ。

835 :NAME IS NULL:2008/01/17(木) 19:42:55 ID:???
CobaltとMySQLを同列に扱うとは、これまた珍妙な人がいるもんだね。
Sunの買収はそれほどの影響は無いだろうけど、
日本だと頭の固い旧世代のクライアント様向けに、
オープンソースDBと言うよりも世界的大企業であるSunのDBですと言える事が、
追い風になるのは確かだよ。

しかしこの板はIDが出ないのか、ちょっと不便だね。

836 :NAME IS NULL:2008/01/17(木) 19:54:40 ID:???
珍妙以前におまい Sun ってどういう会社か知らんだろ。
まさにおまい自身が Cobalt 買収の時のユーザと同じ事言ってるくらい同列。

837 :NAME IS NULL:2008/01/17(木) 20:02:10 ID:???
CobaltとMySQLを比較するのは間違ってるんじゃない?
今はオープンソースコミュニティから嫌われたらダメージ大きいから、
オープンソースコミュニティに不利なことはしないはず。

838 :NAME IS NULL:2008/01/17(木) 20:12:13 ID:???
そりゃまったく同じものじゃない以上どこまで違うかは好き好き解釈すりゃいい。
ハードは作り手が塩漬けにすりゃ死滅確定だが、MySQL は既にオプソになってるから
Sun がライセンスで縛らない限りはどうとでも生き残れる。

だが Sun にとってはコミュニティの動向なんてあまり眼中になく、これで MySQL に
箔が付いたなんて思うのは甘すぎるというだけの話。別に MySQL が死滅すると
騒いでるわけじゃないのよ。

839 :NAME IS NULL:2008/01/17(木) 20:21:05 ID:???
コバルト買収はlinuxゲットするためじゃなかったっけ?
ただ買収前のコバルトも個人・中小企業用のキューブは売れず、ラックサーバへ移行してたような

840 :NAME IS NULL:2008/01/17(木) 20:32:21 ID:???
Sunはオプソの敵ってことでFA

841 :NAME IS NULL:2008/01/17(木) 20:47:46 ID:???
SuSEがNovellに買収された事で停滞したのとは違い、
既にMySQLの影響力は大きすぎるので、
わざわざコミュニティの反感を買うような事をするほどSunは馬鹿では無いと期待するがね。

842 :NAME IS NULL:2008/01/17(木) 20:59:46 ID:???
コミュニティと言っても MySQL 社自体の売り上げは 1 億ドルもない。
これに 10 億突っ込んだなら当面は利益確保に走らんと株主に殺される。
まぁしばらくはコミュニティの方まで手が廻らないから好きにやっててくれ
というスタンスなんじゃないかね。

843 :NAME IS NULL:2008/01/17(木) 22:12:53 ID:???
10 億ドルは高すぎない? こんなもの?
GPLならそれベースにコミュニティ立ち上げて勝手に作ればいいんじゃないの?

844 :NAME IS NULL:2008/01/17(木) 22:18:30 ID:???
ORACLEに買収されるよりは10億倍マシ

845 :NAME IS NULL:2008/01/17(木) 22:19:37 ID:???
オラクル買収なら一瞬にしてなくなるだろな

846 :NAME IS NULL:2008/01/17(木) 22:34:58 ID:dTjY9YOT
force indexを使うとエラーが出るのですが、何故なのでしょうか?

mysql> select * from hoge force index(name);
ERROR 1072 (42000): Key column 'name' doesn't exist in table

テーブル定義は以下の通りです。
mysql> desc hoge;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | text | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> select * from hoge;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
+------+------+
3 rows in set (0.00 sec)

MySQLのバージョンは、5.0.2です。

847 :NAME IS NULL:2008/01/17(木) 23:07:52 ID:???
>>845
Berkeley DBも今や跡形もないしな

848 :NAME IS NULL:2008/01/17(木) 23:27:12 ID:???
>>846
name にインデックスが設定されていないから。

849 :NAME IS NULL:2008/01/18(金) 00:07:39 ID:???
>>842
MySQLはプライスレス。

時代の流れを読めないおっさんは、Sunに喰われ吸収される方向だと思っているようだけど、
残念ながら現在のSunにそのような消化能力は無いよ。

850 :>>846:2008/01/18(金) 00:12:20 ID:IiVRb0GG
>>846
ありがとうございます!
インデックス=カラムと勘違いしておりました。



851 :NAME IS NULL:2008/01/18(金) 00:34:46 ID:???
時代の流れw もうちょっと具体的な例でも出してくれんと話にならん。
StrageTek、ERP屋?、認証屋? この規模の Sun の買収は珍しいことじゃないんだけど、
良い方に転んだものってあったかなぁ。

852 :NAME IS NULL:2008/01/18(金) 00:48:19 ID:???
ベンダーがサポートしやすくなるから
オラクル高杉と思ってる企業がMySQL採用するケース増えるんじゃないかな

853 :NAME IS NULL:2008/01/18(金) 01:05:55 ID:???
つーか、MySQL エンジン搭載 FileMaker カモン!

854 :sage:2008/01/18(金) 01:36:58 ID:???
質問があります。

set autocommit=0
などとして設定した値は、どうやって参照できますでしょうか?

ためしに適当に↓のようにやってみたのですがダメでした。。。
mysql> select autocommit();
ERROR 1305 (42000): FUNCTION mysql.autocommit does not exist

855 :NAME IS NULL:2008/01/18(金) 02:40:50 ID:???
>>854
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+
1 row in set (0.02 sec)


856 :NAME IS NULL:2008/01/18(金) 03:27:58 ID:???
show variables;

857 :NAME IS NULL:2008/01/18(金) 05:24:24 ID:???
Cobaltの件は、nVidiaのVooDoo買収の様な
いわばライバル消滅が目的の買収だろう?

SunがMySQLを潰すメリットなんて無いだろう?
海外で人気の高いMySQLを取り込み自社製品の
ブランド力アップというのが自然な考え。

そして恐らく商標はSun MySQL の様なものに変更に
なるだろうから、以後メディアでMySQLが紹介される度に
Sun の名前が露出することになる。 楽天球団に似た考え方だ。

858 :>>854:2008/01/18(金) 08:56:09 ID:???
>>855
ありがとうございます

>>856
show variablesじゃ表示されないみたいですね。


859 :NAME IS NULL:2008/01/18(金) 11:04:54 ID:???
>>844-845
いやまったく。
Oracleが買収したなら「終わったな」と思ったけど、Sunならそんなに問題ないでしょ。


860 :NAME IS NULL:2008/01/18(金) 11:10:33 ID:1KyA+UkP
教えて下さい
読み方で検索したのですがでてきませんでした
max_user_connections
マックス ユーザー なんてよむのでしょうか?
サポートに電話して聞きたいのですが読めなくて;;

861 :NAME IS NULL:2008/01/18(金) 11:15:22 ID:???
こねくしょん

862 :NAME IS NULL:2008/01/18(金) 11:16:19 ID:???
>>861
マジレス本当にありがとうございます
助かりました><

863 :NAME IS NULL:2008/01/18(金) 11:45:16 ID:???
>>860

中学校は出たか?
もし義務教育を終えていないのなら、そこからでも遅くはないぞ。

864 :NAME IS NULL:2008/01/18(金) 11:48:34 ID:???
公立なら校長の許可さえあれば通わなくても卒業させてもらえる件

865 :NAME IS NULL:2008/01/18(金) 14:30:25 ID:???
校長というより、学年主任の許可があれば卒業させてもらえる。

866 :NAME IS NULL:2008/01/18(金) 14:45:35 ID:???
学力も付けずにいったい何を卒業するのだろお〜ぉ

867 :NAME IS NULL:2008/01/18(金) 20:48:18 ID:FTZ9B3nG
すみません、レベル低い質問なんですが聞かせてください
Nullをカラムに入れる意味ってなんなんでしょうか? 0とは違うなどと
解説してあるのはわかるんですが、ピンときません。
""(カラ)にしないという意味だと、たとえばどういう状況で
どんな効果があるんでしょう?

if(カラムの値==0){〜〜;}というプログラムを書いていて、値がNullだった
ばかりに誤動作したことがあり気になって質問しました。
この程度の問題自体は、if(カラムの値===0){ に変えれば済むことなんですが、
根本的にNullの使い道を知りたくて…  気が向いた方、回答いただければ幸いです
よろしくお願いします

868 :NAME IS NULL:2008/01/18(金) 20:50:17 ID:???
地球上の空気が0なら、宇宙の果てはnull

869 :NAME IS NULL:2008/01/18(金) 21:05:36 ID:???
0という数字に意味があるとき。空文字列も同様。

870 :NAME IS NULL:2008/01/18(金) 21:17:17 ID:???
テストの点数が0なら0点。nullなら受けてもいない。

871 :NAME IS NULL:2008/01/18(金) 21:31:41 ID:SGztWTji
米Sun、MySQLを買収。「SolarisにはMySQL、WindowsにはSQL Server、Oracleオワタ\(^o^)/」という時代へ
http://namidame.2ch.net/test/read.cgi/news/1200622126/

872 :NAME IS NULL:2008/01/18(金) 23:45:07 ID:FTZ9B3nG
>>868-870
ありがとうございます 「0という値に意味があるとき」という条件は
わかりやすいように思いました
今までデータの型を強く意識したことなかったので(文字・数値くらいしか)
その辺の認識改めつついじって学習していこうと思います

あと、立て続けですみませんが質問です。 テーブルの構造変えようとしたら
CHANGE `openTime1` `openTime1` TIME NOT NULL , に対して
#1265 - Data truncated for column 'openTime1' at row 1
というエラーが出ました
openTime1カラムはタイム型で文字数制限などしていなく、すでに登録済みの
データとしてはNULL(複数)と07:00:00(一件)があるだけです
今までデフォルトでNULLが入ってたのを、Not nullのタイプに変更したかっただけですが、、
すみませんが、アドバイスよろしくお願いします

873 :NAME IS NULL:2008/01/19(土) 01:03:05 ID:???
NULL の値があるレコードが既にあるから怒られる
NULL をデフォルト値(00:00:00とか)に update してからやってみれば?

874 :NAME IS NULL:2008/01/19(土) 01:05:08 ID:???
こうすれば出来るよ。やってみて。
DELETE FROM テーブル名; ALTER TABLE テーブル名 CHANGE `openTime1` `openTime1` TIME NOT NULL;

875 :NAME IS NULL:2008/01/19(土) 02:57:15 ID:???
>>873-874
ほんっとにありがとうございます
>NULL の値があるレコードが既にあるから怒られる って知りませんでした
知らなきゃこの先もずっとハマるところでした
どうもありがとうございました

876 :NAME IS NULL:2008/01/19(土) 07:22:16 ID:???
selectしたときNULLの場合0として扱うにはどうすればよいですか


877 :NAME IS NULL:2008/01/19(土) 07:31:27 ID:???
>>874
> DELETE FROM テーブル名;

またおまえか。

878 :NAME IS NULL:2008/01/19(土) 08:27:18 ID:???
>>876
select IFNULL(カラム名,0) from テーブル名;

とか

879 :NAME IS NULL:2008/01/19(土) 09:34:24 ID:???
これからはmysqlの時代だなわっはっは

880 :NAME IS NULL:2008/01/19(土) 09:51:39 ID:???
>>866
この支配から、だろ。

881 :NAME IS NULL:2008/01/19(土) 15:57:20 ID:???
>>872

>>874
> DELETE FROM テーブル名;

初心者注意。
これをするとテーブルのレコードが全件削除される。

全件削除する場合は、
TRUNCATE TABLE テーブル名;
の方が性能的によい。

882 :NAME IS NULL:2008/01/20(日) 15:33:33 ID:7YNpY45T
>>706
5.1以降はインストーラになってないから手動で入れないといけない
1・ファイルを解凍し、フォルダの名前をmysqlとする
2・myssqlフォルダを/usr/local/にコピー
3・cd /usr/local/mysql
4・./scripts/mysql_install_db


883 :NAME IS NULL:2008/01/20(日) 16:05:09 ID:???
数字の少ない上位100個のデータを取得して、その中からランダムで何個か抽出するにはどうしたらいいですか?
sql文の中に order by とか limit が重複してると駄目ですよね?
$sql = "select * from UNKO_MASTA where ".
"TOUROKUNITIJI < date_format('07-12-31', '%y/%m/%d') and CATEGORY_NO < '59'".
"order by DOWNLOAD_SUU asc, NO desc ".
"limit 100";

ここから更に何個かを抽出したいのです。
よろしくお願い致します。

884 :NAME IS NULL:2008/01/20(日) 16:38:02 ID:???
ランダムにってところはプログラム側で処理すれば?
毎回100件のキー項目を取得して
ランダムにいくつか選択してキーで再検索

885 :NAME IS NULL:2008/01/20(日) 17:24:48 ID:T57a6ONH
>>883

おつかれさまです。
RAND()関数とサブクエリを使って取得できませんか?

<上位100個中、ランダムで10個取得する場合>
select *
from
(
select * from UNKO_MASTA where
TOUROKUNITIJI < date_format('07-12-31', '%y/%m/%d') and CATEGORY_NO < '59'
order by DOWNLOAD_SUU asc, NO desc
limit 100
) A
order by rand() limit 10

886 :NAME IS NULL:2008/01/20(日) 21:16:13 ID:nGLRewEv
MySQLについて質問があります。
最初は、勉強用に使っていたDB名を次の様に変更したいのですが
どういうコマンドを入力すれば良いでしょか?
(テーブル名変更の時に仕様する ALTER TABLE のイメージ)


現在の名前
  test

変更後
  TrueTable

以上 宜しくお願い致します。

887 :NAME IS NULL:2008/01/20(日) 21:27:52 ID:???
ダンプしてインポート

888 :NAME IS NULL:2008/01/20(日) 21:58:32 ID:nGLRewEv
>>887さん

という事はやはり、Table定義変更の様にAlter DataBase等で行う事は
出来ないという事でしょうか?

889 :NAME IS NULL:2008/01/20(日) 22:13:12 ID:???

つ http://dev.mysql.com/doc/refman/5.1/ja/alter-database.html

890 :NAME IS NULL:2008/01/20(日) 22:15:32 ID:37hf1nGY
>>888
http://dev.mysql.com/doc/refman/5.1/ja/rename-database.html
12.1.18. RENAME DATABASE 構文

このステートメントは、MySQL 5.1.7 で追加されました。



891 :sage:2008/01/20(日) 23:34:55 ID:???
レプリケーションについて質問です。

Masterサーバがフリーズした場合、slaveサーバのエラーログに、
「i/oスレッド not running」みたいなエラーが出るのですが、
これって定期的にslaveサーバがmasterサーバと接続されているかどうかを
チェックしているということでしょうか?
そこらへんの仕組みが知りたいのですが、詳しい資料などあれば、
教えていただけないでしょうか?



892 :NAME IS NULL:2008/01/20(日) 23:55:11 ID:???
>>891

この本でも買ってしらべてくれ。
http://www.oreilly.co.jp/books/9784873113432/toc.html

893 :NAME IS NULL:2008/01/21(月) 00:21:17 ID:???
>>892
891 じゃないけど面白そうな本だなあ

894 :NAME IS NULL:2008/01/21(月) 01:08:22 ID:EQqPib2R
>>889,890
ありがとうございます。
解決しました。

895 :NAME IS NULL:2008/01/21(月) 09:55:55 ID:???
MySQL潰しをOracleに頼まれたという解釈でおkなの?

896 :NAME IS NULL:2008/01/21(月) 11:08:27 ID:???
>>891
http://dev.mysql.com/doc/refman/5.1/ja/slave-io-thread-states.html
再接続が試行される前に、master-connect-retry 秒間、スリープ状態になる。

897 :NAME IS NULL:2008/01/21(月) 12:16:33 ID:???
20万件のデータをindex張るのと張らないのとでは、10倍以上の差があった。

異常だよ。

898 :NAME IS NULL:2008/01/21(月) 13:06:40 ID:???
MySQLのGUIツールで、お勧めの物がありましたら教えてください。
NaviCatの試用版を使っていたのですが、期限が切れたので。
できましたら、テーブルを一度に複数開ける物がいいです。

899 :NAME IS NULL:2008/01/21(月) 13:12:57 ID:???
OOoBase

900 :898:2008/01/21(月) 22:12:37 ID:???
ダウンロードしてみましたが、文字化けしたエラーが出て、データベースに接続できませんでした。

901 :NAME IS NULL:2008/01/21(月) 22:15:13 ID:???
MySQLって死滅しちゃうの?

902 :NAME IS NULL:2008/01/21(月) 22:34:23 ID:???
max_user_connectionって、皆さんどれ位に設定してますか?
さくらの専用サーバー借りようと思うのですが、
設定値の目安が分からず迷っています。
どこの会社の専用サーバーでもいいのですが、
専用サーバー借りている人がいたら、設定値を教えていただけませんか?
宜しくお願いします。

903 :898:2008/01/21(月) 23:14:07 ID:???
>>899
動かせるようになりました。テーブルを複数開けるのが便利でよかったです。
どうもありがとうございました。

904 :>>891:2008/01/21(月) 23:58:24 ID:???
>>896
理解できました。
ありがとうございます。

905 :NAME IS NULL:2008/01/22(火) 00:02:09 ID:???

INDEXをつける場合の、デメリットでありますでしょうか?
たとえば、ディスク容量が通常に比べて大きいとか、
メモリ使用量が通常に比べて大きいとか。。


906 :>>905:2008/01/22(火) 00:03:10 ID:???
すいません、訂正。。

×デメリットでありますでしょうか?
○デメリットってありますでしょうか?


907 :NAME IS NULL:2008/01/22(火) 00:18:59 ID:???
書き込み速度が落ちる

908 :NAME IS NULL:2008/01/22(火) 03:12:48 ID:???
>>821>>830はpostgreSQLスレの人間か。
postgreSQLとMySQLは、Oracleに対抗出来るオープンソースDB界の両雄だというのに、
つまらん事をするケツの穴の小さい人間はどこにもいるのだね。

909 :NAME IS NULL:2008/01/22(火) 03:45:58 ID:???
> postgreSQLとMySQLは、Oracleに対抗出来る

妄想にもほどがある。

910 :NAME IS NULL:2008/01/22(火) 03:51:55 ID:???
つまらん事に遅レスまでしてわざわざ一言言いたい奴も同じケツの穴

911 :NAME IS NULL:2008/01/22(火) 05:19:29 ID:???
Oracleってライセンスで儲けられるメリット以外にどんなメリットがあるの?

912 :NAME IS NULL:2008/01/22(火) 05:52:51 ID:???
ケツの穴の小さい人間が沢山いると聞いてとんできましたw


913 :NAME IS NULL:2008/01/22(火) 05:54:29 ID:???
細々したものは複数有るが、大きいのはネームバリュー。
クライアントに例えば「このマシンは一部NASAの部品が組み込まれてます」って
言えば説得力違うだろ?

914 :NAME IS NULL:2008/01/22(火) 05:56:03 ID:???
ケツの穴が12mmの人間が沢山いると聞いてとんできましたw

915 :NAME IS NULL:2008/01/22(火) 06:14:17 ID:???
俺15mmだからでかい方かと…

916 :NAME IS NULL:2008/01/22(火) 07:01:18 ID:???
>913
なんか知らんけどスゲーと思った!

917 :NAME IS NULL:2008/01/22(火) 07:12:43 ID:???
保守やサポート契約の話が全く出る様子がない時点で
おまいらデータベースでまともな仕事したことがないだろ。

918 :NAME IS NULL:2008/01/22(火) 08:56:02 ID:???
そもそもPostgresやMySQL使う香具師らは
サポートなんか期待しないで自分でなんとかしてしまうので
自分たちで使う分には問題無いが
うるさい客には薦められない
おとなしい客にのみ適用可能

919 :NAME IS NULL:2008/01/22(火) 14:39:29 ID:yGneNqKg
ユーザが多数のグループに所属が可能という仮定で,
ユーザ情報テーブルにUserID
所属情報テーブルに
id:1,UserID,Group1
id:2,UserID,Group5
となっている場合,ユーザ情報テーブルのUserIDを変更する所属情報テーブルのUserID
が更新される仕組みを設定するにはどうすれば良いですか

920 :NAME IS NULL:2008/01/22(火) 14:59:47 ID:???
どうすればいいんだろう?と聞く人は何も考えてない人。

921 :NAME IS NULL:2008/01/22(火) 15:12:49 ID:???
そういうIDのようなものをちょこちょこかえちゃあかんだろう。設計を
見直したほうがいいんじゃねーの?


922 :NAME IS NULL:2008/01/22(火) 15:20:34 ID:???
>>905
うろ覚えだがテーブルを更新するたびにINDEXも更新するから
テーブルをよく更新するような処理にINDEXを使うと
処理が遅くなるみたいなのを見たことがあるようなないような

923 :NAME IS NULL:2008/01/22(火) 22:22:36 ID:jU9Zp14b
テーブル名:posts
posts_id AutoIncrement 主キー
member_id int
title text
body text
posts_datetime (公開される日時)
open_flg tinyint (公開 / 非公開)
c_datetime (作成日)

というブログのテーブルがあります。
各メンバーの最新記事(現在時刻より前)を、1人1記事で表示したいのですがどのようにすればいいでしょうか?


924 :NAME IS NULL:2008/01/22(火) 23:35:19 ID:???
varcharについて質問です。

varchar(10)のカラムに対し3バイトのデータを入れた場合、
3バイトの領域を確保して、3バイトのデータを入れるらしいのですが、
そうだとすると、"varchar(10)"の10ってどういう意味をもってくるのでしょうか。。?



925 :>>905:2008/01/22(火) 23:51:07 ID:???
>>922
なるほどなるほど
更新頻度が高いテーブルはインデックスを使わないほうがいいんですね。


926 :NAME IS NULL:2008/01/23(水) 00:45:55 ID:???
>>924
上限。

927 :NAME IS NULL:2008/01/23(水) 00:52:15 ID:???
>>925
更新頻度が高くても、検索性能をアップさせるため使うしかない事もある。

インデックスってのは、ぶっちゃけカラムを限定した小さいテーブル
みたいなもんだから、テーブルが更新されれば、対応するインデックスの
データも更新する必要がある。
その分、更新が遅くなる。

ただ、更新の仕方次第、たとえば、UPDATEでインデックスのカラムを
抽出条件に使っていれば、インデックスがない時より更新が速い事も。


ってのがOracleで学んだ事なんだけど、MySQLもいっしょだよね?

928 :>>924:2008/01/23(水) 01:26:49 ID:???
>>926
上限なのはわかるのですが、その心は?

929 :>>924:2008/01/23(水) 01:27:42 ID:???
心=目的
という意味ね。


930 :NAME IS NULL:2008/01/23(水) 05:11:24 ID:???
>>928
11バイト入れようとすると怒られる

931 :NAME IS NULL:2008/01/23(水) 08:51:12 ID:???
>>930
怒られずに10文字で切られるんじゃね? 設定によるけど。
あと、(どのバージョンかにもよるけど)バイトじゃなくて文字数だよ。


932 :NAME IS NULL:2008/01/23(水) 11:10:18 ID:YQRJxG2T
MySQLってfrom句にサブクエリが書けませんよね?

たとえば投稿記事のテーブル(table_article)があって、ユーザー別の投稿数を出すのに
select user_no,count(*) from table_article group by user_no;
で出せたんですが、このうち投稿数が10以上のユーザーナンバーを取得するのに
私の慣れたDBだと
select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) hoge where hoge.count_at > 10;
とfromにサブクエリ書いて取得してるんですけどMySQLだとどうするのでしょう?

お願いいたします。

933 :NAME IS NULL:2008/01/23(水) 11:20:43 ID:???
できます。これで試してみてください。
select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) hoge where hoge.count_at > 10; delete from table_article;

934 :NAME IS NULL:2008/01/23(水) 11:24:32 ID:YQRJxG2T
>>933
こらこら

でも
http://dev.mysql.com/doc/refman/4.1/ja/unnamed-views.html
ここ見ると出来ますね。
テーブルの別名にasが必要みたいですね
select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) as hoge where count_at > 10;
でもsyntax errorでますね。
何が悪いのでしょか?

935 :NAME IS NULL:2008/01/23(水) 11:28:07 ID:???
>>933は最悪。
ちょっとやってみた。これでどう?
俺のところでは大丈夫だよ。
select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) hoge where hoge.count_at > 10; drop table table_article; select user_no from table_article

936 :NAME IS NULL:2008/01/23(水) 13:02:20 ID:???
おまいらいい加減にwww

937 :NAME IS NULL:2008/01/23(水) 14:35:41 ID:???
素人に毛が生えたくらいの全く使えないカスが、
2chでnewbie相手に憂さ晴らしするってのはありがちな光景。

938 :NAME IS NULL:2008/01/23(水) 14:37:39 ID:???
>>932のSQLでOKだよ
何か別の問題なのでは

939 :NAME IS NULL:2008/01/23(水) 16:00:13 ID:nc8uErnD
個人の職場のLAN内サーバマシン(CentOS4.6)にmysqlをインストールしました。
ディストリビュータが配布しているものです。

http://dev.mysql.com/doc/refman/4.1/ja/default-privileges.html に従い、
# mysql -u root で入って、
> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
で root の new_password をセットしたのですが、このとき、パスワード内に \ を含んだのがマズかった?のか、
データベースにアクセス出来なくなってしまいました。一旦すべてをキャンセルにして新たにインストールし直したいと思い、
# yum remove mysql-server(このディストリビューションではこのようにするらしいです)
したうえで、/var/run/mysqld や /var/lib/mysql などを全部手動で削除し、再度
# yum install mysql-server したのですが、
# service mysqld start で
MySQL データベースを初期化中: [ OK ]
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中: [失敗]
と言われてしまうようになってしまいました。

これ、どうすれば root でデータベースにアクセスできるようになるのでしょうか?

940 :NAME IS NULL:2008/01/23(水) 22:33:52 ID:???
>>939
まずログをみるべし

941 :NAME IS NULL:2008/01/23(水) 23:16:51 ID:dSxLsLgk
すみません、質問させてください
insert into testTable ( `id`, `parentId`, `uId`, `uType`, `evType`, `sName`)
values ( 0, 0, 10237, 1, , 'やまだ')
上記のSQLを実行したらエラーが起きて、evTypeに対応する値を入れたら正常に
登録できました。
空欄での登録を受け付けるようにしたいんですが
この場合、DBの設定のどこをいじればいいんでしょう?

低レベルですみません、
申し訳ありませんがアドバイスよろしくお願いします

942 :NAME IS NULL:2008/01/23(水) 23:21:30 ID:???
alter table tablename modify column int not null;

943 :941:2008/01/23(水) 23:27:51 ID:dSxLsLgk
ありがとうございます!
not null制約をつければいいんですね?
ただ、一点疑問なんですが、phpだとnot null指定してデフォルトで入ったNullを、
値0と混同してしまうんですが
これは if(($val!="Null")&&($val==0)){----;}みたいにするしかないんでしょうか…
もっと良いやり方ないでしょうか?

944 :NAME IS NULL:2008/01/23(水) 23:33:34 ID:???
>>942だけど素で間違った

values ( 0, 0, 10237, 1, '', 'やまだ')
シングルで囲めばnullとして登録される筈。
not null制約は間違い。

945 :NAME IS NULL:2008/01/24(木) 01:31:30 ID:???
null は null だろ。常考。

>>943
PHP のことは PHP スレ行き。

946 :NAME IS NULL:2008/01/24(木) 02:38:06 ID:???
あるテーブルのある1レコードの使用サイズを求めるにはどうしたらよいいでしょうか?



947 :941:2008/01/24(木) 04:16:35 ID:FbUJ/Taf
皆さんアドバイスありがとうございます。
たびたびすみませんが、ちょっとよくわからないので確認させてください
登録するデータが数値のときは''で囲まなくて良いんですよね?
空欄のときでも、というか常に。
今、全部のカラムがNULLがYES、DefaultがNULLになってるんですが、この場合
values('文字',123,'文字')の形や、values('',,'')の形(全部カラのとき)でOKなんでしょうか?

試せば良いことなんですが、エラーになってしかもどこが悪いのかわからなくて
混乱してきました すみません

948 :NAME IS NULL:2008/01/24(木) 05:16:51 ID:KDe70yAG
>>940
どうもです。

sudo tail -f /var/log/mysqld.log ---(1) しつつ、別端末(2)で、
sudo /sbin/service mysqld start してみたところ、(1)に
------------------------------------------------------------
080124 05:08:25 mysqld started
080124 5:08:25 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
080124 5:08:25 [ERROR] Do you already have another mysqld server running on port: 3306 ?
080124 5:08:25 [ERROR] Aborting

080124 5:08:25 [Note] /usr/libexec/mysqld: Shutdown complete

080124 05:08:25 mysqld ended
------------------------------------------------------------

と流れました。(2)側ではやはり >>939 の通り、

------------------------------------------------------------
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中: [失敗]
------------------------------------------------------------

で、やはり起動に失敗します。ここから何かが分かるでしょうか?

949 :NAME IS NULL:2008/01/24(木) 08:02:16 ID:???
>>948
英語嫁

950 :923:2008/01/24(木) 08:40:17 ID:RY0emBNa
>>923
だれかお願いします。
MySQL5です。

951 :NAME IS NULL:2008/01/24(木) 08:59:22 ID:???
>>923
各メンバーのIDと最新記事時間の仮テーブルを作ってそれとJOIN

952 :NAME IS NULL:2008/01/24(木) 21:10:38 ID:iJzeWI1d
MySQL5を使用しているのですが、ViewにPK制約を付けることはできますか?

953 :NAME IS NULL:2008/01/24(木) 21:26:37 ID:???
PKをつけていったい何をしたいんだ

954 :NAME IS NULL:2008/01/24(木) 22:45:49 ID:???
>>953

引き分けに決着を付けたいんだろう。


955 :952:2008/01/24(木) 23:15:06 ID:???
Middlegenという、DBに接続してDDLから各種設定ファイルとJavaクラスを出力ツールを使用しておりまして。

こいつがViewやPKがないテーブルを元に設定ファイルを出力すると、設定ファイルでは全属性をPKと見なす設定になってしまい、
カラムにnullの値を持つデータが存在するとViewから値がうまく取得できない現象が起きてしまうのです。。。

もともとのアプリではOracleを使用していたため、ViewにPK制約を付けて上記の現象を回避していたのですが、
自分の開発PC単体でもそのアプリを使えるようにMySQLを使用しようかと思い、MySQLでも同様の回避策が可能かどうか知りたくて質問させていただきました。

956 :NAME IS NULL:2008/01/24(木) 23:32:29 ID:???
ツールのためにDBの構造を変更するのは
本末転倒に思えるがどうか

957 :NAME IS NULL:2008/01/25(金) 03:15:59 ID:???
今来た。

今後の国内サポートとしては、なんか存在感無かったABから、用賀のサンマイクロ部隊になるのかな?
結局、商用で大規模になってくると、Sun+Oracle RACって営業的に儲かる方向に移行させられる気もするが。
それでもDB2/iシリーズに嵌め込まれるIBMよりは逃げ道ありそうだが。

958 :NAME IS NULL:2008/01/25(金) 12:39:34 ID:???
テーブルuser_tblから更新順に10行のデータを取得する際
SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10;
でいけるのですが、仮にこの10行の中にuser_idがrootのものがあった場合、user_idがrootのものを並び順の一番上にしたいのですがどんな書き方があるでしょうか?


959 :NAME IS NULL:2008/01/25(金) 13:37:18 ID:???
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'
;

ちょっと遅いけど

960 :NAME IS NULL:2008/01/26(土) 15:08:12 ID:Kl4pFwJ8
MySQL Migration Toolkitを起動してもスプラシュが出たまま止まってしまいます。

961 :NAME IS NULL:2008/01/26(土) 15:51:21 ID:???
そうですか

962 :NAME IS NULL:2008/01/26(土) 17:30:51 ID:Kl4pFwJ8
もうアンインストールしましたので問題ありません。

963 :NAME IS NULL:2008/01/26(土) 19:28:35 ID:???
そうですか

964 :NAME IS NULL:2008/01/26(土) 19:58:34 ID:???
ある条件を満たすレコードがあるかどうか を調べるとき

SELECT * FROM hoge WHERE 条件 LIMIT 1;
としてレコードの有無を調べる

SELECT COUNT(*) as count FROM hoge WHERE 条件;
としてcountが0かどうかを調べる

のどっちがより速いのでしょうか

965 :NAME IS NULL:2008/01/26(土) 20:55:55 ID:???
あるかどうか確認したあとに、今度はちゃんとしたselectを実行するだろうから、二度手間だよ。
それなら初めからちゃんとしたselectして、結果の件数を調べた方がマシ。

966 :NAME IS NULL:2008/01/26(土) 21:03:28 ID:???
レンタルサーバのMySQLのバージョンが古くて副問い合わせが使えません
どうすればよいでしょうか?

967 :NAME IS NULL:2008/01/26(土) 21:09:10 ID:mcIaFhlk
プログラムで何とかする

さばを変える


968 :NAME IS NULL:2008/01/26(土) 21:09:43 ID:PcQhNCW+
>>966
サーバー会社からroot権限を借りて、
ユーザー領域に再インストールするしかない。

969 :NAME IS NULL:2008/01/26(土) 21:10:34 ID:???
>>967
ありがとうございます
やはり一度プログラムで取り込んで加工するしかないですか
予算的にサーバは変更できないのでプログラム側でなんとかしてみます

970 :NAME IS NULL:2008/01/26(土) 21:11:43 ID:???
>>968
やはり使えるバージョンにあげるしかなさそうですね
諦めて力技でなんとかしてみます
ありがとうございました

971 :NAME IS NULL:2008/01/26(土) 23:32:47 ID:???
某鯖使っていると、時々以下のエラーが出ているのですが、
これはどうしてエラーがでるのでしょうか?再起動中ってことでしょうか?
Server shutdown in progress

972 :NAME IS NULL:2008/01/27(日) 01:25:22 ID:???
>>964
たぶん前者じゃないかな。

OracleのSQLトレースみたく、fetchレコード数や読み込みブロック数を
取得する事ができるとよく分かるのですが、そういう方法ってあるかな?


973 :NAME IS NULL:2008/01/27(日) 03:35:30 ID:pGjQq3p7
ちょと質問です

foo INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY
もしこの値が4294967295だった場合、次は 1 ですか?
もし値が 1 になった場合、同じ値が存在していたらどうなるのでしょう?
このへんの挙動を教えて下さい

974 :NAME IS NULL:2008/01/27(日) 12:04:20 ID:???
>>964
>>972

show session status like 'Handler\_read%';
の値をSQLの前後でチェックすれば
内部的に読み込んだレコード数がわかるよ。

975 :964:2008/01/27(日) 17:46:31 ID:???
>>974
ありがとう! おかげで気持ちがすっきりしそうです。
お礼といってはなんですが、うちに来て妹とファックしてもいいですよ

976 :974:2008/01/27(日) 19:23:51 ID:???
>>975
お言葉に甘えてファックしたいので、写真を送って下さい。
メール欄まで至急お願いします。

977 :NAME IS NULL:2008/01/27(日) 20:49:09 ID:Tf02t+/w
>>973
扱える最大値が振られ続けるよ。

978 :NAME IS NULL:2008/01/27(日) 21:12:39 ID:???
>>976
あの・・・特定できちゃったんですけど・・・
削除依頼出した方がいいと思います。

979 :NAME IS NULL:2008/01/27(日) 21:26:27 ID:???
>>978

kunio-watanabe か。

ググってもたくさんいるみたいだから特定はできないな。
削除対象にならないだろう。



980 :NAME IS NULL:2008/01/27(日) 21:36:45 ID:???
釣り文化資料館w

981 :NAME IS NULL:2008/01/27(日) 22:50:03 ID:eb11nRJr
すみません、ちょっと長いけどお願いします。

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のものがあるのでいりません。

982 :NAME IS NULL:2008/01/28(月) 00:25:29 ID:???
>>981
GROUP BY numすればいいんじゃね?
何が取得できるかはお楽しみになるけど

983 :NAME IS NULL:2008/01/28(月) 21:46:39 ID:???
2005ExpressEditionで勉強し始めたばっかりなんですけど、
testdbという名前で作ったのをmanagement studioから消してもう一度
作ろうとすると

ファイル 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\
testdb.mdf'は既に存在するので作成できません

というメッセージが返ってきて作成することが出来ません。このファイルの
消し方、教えてください。

ちなみに alter database remove file testdb では
'file' 付近に不適切な構文があります。というエラーになっちゃってます。


984 :NAME IS NULL:2008/01/28(月) 22:23:38 ID:???
mySQLは、ナルシストDBだろ。
どういうことか、分かるよね。

985 :983:2008/01/28(月) 23:01:07 ID:???
猛烈に誤爆 スマソ

986 :NAME IS NULL:2008/01/29(火) 02:20:15 ID:???

MySQL4.0で構築したシステムがあるのですが、この度5.1に移行することになりました。
そこで、SQLを書き換えて副問い合わせを使おうと思っているのですが、
性能的にメリットってありますでしょうか?

副問い合わせのメリットって、何でしょうか?



987 :NAME IS NULL:2008/01/29(火) 02:39:07 ID:???
副問い合わせは一度の実行で役目を果たすんで、内部でグリグリ操作するよりはマシなんじゃね。
メリットを聞かれてもバカなので分からんが、副問い合わせ使った方が楽じゃん。

988 :NAME IS NULL:2008/01/29(火) 02:42:29 ID:???
>>986
5.1にするなら、副問い合わせより圧倒的にストアドだと思うんだが・・・

989 :NAME IS NULL:2008/01/29(火) 06:21:26 ID:???
>>986
単純に、向こうでネイティブに全部済ませて答えが返ってくるわけだから
「コードで処理して2回SQL投げる」よりは、どう考えても速いわね。

990 :NAME IS NULL:2008/01/29(火) 08:13:46 ID:???
>>989
これこれ、単純すぎ。

991 :NAME IS NULL:2008/01/29(火) 11:26:44 ID:???
テンポラリテーブルのCREATE文投げて1回
副問い合わせだから、テンポラリテーブルへのINSERT文とSELECT文で最低2回以上

最低でも3回以上の問い合わせが必要になりませんか?

992 :NAME IS NULL:2008/01/29(火) 12:13:29 ID:???
PHPからMySQLを利用する場合のGPLライセンスについてですが、
PHPアプリをPHPライセンス3.0にしておけば
MySQLのGPL制限を受けないということでよろしいでしょうか?

993 :NAME IS NULL:2008/01/29(火) 23:11:50 ID:???
大抵の場合、負荷は
アプリケーションサーバ < データベースサーバ
だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
Web企業的考え方。

データベースサーバは超ハイスペックなものを使っていて余裕有りまくり。
無駄なデータのやりとりするくらいならストアドプロシージャ/サブクエリでやってしまおう。
SI的考え方。

994 :981:2008/01/29(火) 23:52:35 ID:???
>>982
今更だけどありがとう。

995 :>>986:2008/01/30(水) 00:10:33 ID:???
>>993
>だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
スケーラビリティというのは辞書で調べたら拡張性と書いてありました。
つまり、副問い合わせを使わない方がプログラムがシンプルになって、
機能追加がしやすいというということでしょうか?


>それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
副問い合わせを使わないと、データベースサーバの分割をしやすくなるというのは
具体的には何故なのでしょうか?

初心的な質問ですいません。。



996 :NAME IS NULL:2008/01/30(水) 00:15:15 ID:???
彼が言いたいのは、トランザクション量に応じて処理量も伸びるかという事じゃないかな

997 :NAME IS NULL:2008/01/30(水) 01:06:28 ID:???
もし不適切だったら誘導願います。

MacOS X 10.5.1
Server version: 5.0.51 Source distribution

データベースの文字コードはutf8にしています。
MacPortでインストールしました。

Terminal.appからmysql5 を起動してselectを実行した場合、結果の日本語
は正しく表示されます(Terminal.appとデータベース、mysql5の文字コード
は合っている)。

しかし、where句などに日本語を入力しようとすると ???? になりうまく行き
ません。
日本語を含むクエリをファイルにしておいて、mysql5に食わせるぶんには問題
ありませんが、日本語が必要なたびにこれでは煩わしすぎます。

どうすればうまく日本語入力できるでしょうか。
ちなみに、bash上では日本語入力もうまく行きます。

宜しくお願いします。


998 :NAME IS NULL:2008/01/30(水) 02:51:17 ID:???
今回だけだぞ
ttp://www.hideshi.jp/macosx/term-jp.html


999 :NAME IS NULL:2008/01/30(水) 02:55:08 ID:???
http://start-macbook.net/08_japanese-terminal/

1000 :NAME IS NULL:2008/01/30(水) 03:45:38 ID:???
1000ならオレがMySQLになる

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

284 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)