MySQL 総合 Part19

このエントリーをはてなブックマークに追加
1NAME IS NULL
オラクル社によるオープンソースのRDBMS、MySQLの総合スレです。

MySQL 総合 Part18
http://hibari.2ch.net/test/read.cgi/db/1276247839/

MySQL Developer Zone http://dev.mysql.com/
MySQL 5.5 マニュアル (E) http://dev.mysql.com/doc/refman/5.5/en/index.html
MySQL 5.1 マニュアル (J) http://dev.mysql.com/doc/refman/5.1/ja/index.html

日本MySQLユーザ会(MyNA) http://www.mysql.gr.jp/
ML過去ログ http://www.mysql.gr.jp/mysqlml/mysql/

ここで質問をする前に、MyNAでのFAQと心得の条を最初に確認しましょう。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0
2NAME IS NULL:2011/01/19(水) 20:29:36 ID:???
前スレdat落ちしてたので立てた
3NAME IS NULL:2011/01/19(水) 23:04:37 ID:???
基本的な技術ですが調べても
わからないので質問させてください。

Nullと空白の違いがわかっておりません。

マニュアルによると
Null…電話番号が不明
空白…電話を持っていない
とありますが、
将来的に入れるかわからない・
どちらかというと値を入れない可能性が高い場合などは
どちらを採用しておいた方が検索が高速なんでしょうか?
4NAME IS NULL:2011/01/19(水) 23:27:05 ID:???
NULL
5NAME IS NULL:2011/01/20(木) 01:18:05 ID:???
MySQLはNULLもINDEX効くので性能は同じ。
性能うんぬんよりも、NULLを扱うかどうかで
比較の仕方やCOUNT(col)の結果が異なるので要注意
ttp://d.hatena.ne.jp/LukeSilvia/20100322/p1
6NAME IS NULL:2011/01/21(金) 17:35:11 ID:OMsdM3Xs
MySQLはDecimalでは符号も符号も1バイトとカウントされることがありますよね。
他のDBMSでも同じように符号を1バイトとカウントするものなのでしょうか。
7NAME IS NULL:2011/01/21(金) 19:29:28 ID:???
Oracleも1バイト

「有効桁数38桁未満の負数の場合は更に1バイト加算」
http://otndnld.oracle.co.jp/skillup/oracle9i/3_1/index.html
8NAME IS NULL:2011/01/21(金) 22:27:02 ID:???
phpとmysqlに詳しい人
今作ってるゲームで、ウェブから特定のテーブルにアイテムデータなんかの入れ込みをしたいんですが
最終的な部分で詰まってます。
コード修正できる人いたらお願いしたいです。

謝礼として5000WebMoney(5000円分)となります。
詳しくは中のファイルにサイトとデータベースファイル入れておりますのでご覧下さい><
http://www1.axfc.net/uploader/He/so/309832
※ウィルスや釣りではありません
9NAME IS NULL:2011/01/22(土) 01:07:48 ID:???
>>8 ウィルスばら撒いて楽しいですか?
10NAME IS NULL:2011/01/22(土) 01:26:01 ID:E4S0qg9W
質問です。
MySQLでテーブルをロックした場合、
別の人がアクセスすると、どうなるのでしょうか。

エラーが返るのか、ロック解除されるまで順番待ちなのでしょうか。
11NAME IS NULL:2011/01/22(土) 07:15:49 ID:???
READロックの場合は Select 可能、更新はブロックされる(アンロックされるまで待たされる)
WRITEロックの場合はSeelctも更新もブロックされる
12NAME IS NULL:2011/01/22(土) 11:17:29 ID:E4S0qg9W
>>11
ありがとうございます。

> WRITEロックの場合はSeelctも更新もブロックされる
これもアンロックされるまで待たされるという認識でいいですか?
13NAME IS NULL:2011/01/23(日) 17:30:36 ID:yOYPt3h9
C言語でMYSQL操作を書いています。
UTF8の可変文字列をselectで取得すると、
結果が必ず「??????????????」となってしまいます。

環境:Linux(Fedora core)
1413:2011/01/23(日) 17:31:38 ID:yOYPt3h9
何かオマジナイが必要なのでしょうか。MYSQLにログインして表示すると、ちゃんと表示されるのですが・・・

ソースの概略は次のとおりです。
mysql_query(&mysql_buf, "SELECT * from MYADATABASE");
result = mysql_store_result(&mysql_buf);

for(count = mysql_num_rows(result); count > 0; count--)
{
record = mysql_fetch_row(result);
printf("%s\n", record[0]);
printf("%s\n", record[1]);
printf("%s\n", record[2]);

};
15NAME IS NULL:2011/01/23(日) 17:36:21 ID:???
OSのTermの文字コードかmysqldの文字コードかCのソースの文字コードのどれかがおかしい気がする
1613:2011/01/23(日) 17:52:14 ID:yOYPt3h9
うーむ。OSのターミナル、MYSQL, Cのソース、全てUTF8で統一したんですがねえ。

MYSQLの設定事態は最初EUCJPだったので、UTF8に変更。
全てのDataBaseを削除後、DataBaseを作り直して、UTF8になっていることを確認。


そもそも、ポインタ(Record[0])から始まるデータをダンプしてみると、
全て0x3Fになっています・・・
ちなみに、文字列が日本語を含まなければ、ちゃんと表示されます。

朝からいろいろ調べたり試したりしていたら、もう日曜日が終わっちゃう。
何やってんだか<俺
17NAME IS NULL:2011/01/23(日) 18:00:23 ID:???
>>16
あと、ドライバの文字コードも合わせないとダメ
ちなみに、文字コードを指定して、その文字コードに対応してなくてもエラーを出さないドライバもあるから確認したほうがいい
1813:2011/01/23(日) 18:04:23 ID:yOYPt3h9
ドライバというのは、MYSQLのC言語用ライブラリ(libmysqlclient.so
)のことでしょうか。

たしかにその視点では見てなかったです。これから調べます。
19NAME IS NULL:2011/01/23(日) 18:33:17 ID:???
>>12
遅くなってゴメソ
それでおk
2013:2011/01/23(日) 20:31:39 ID:yOYPt3h9
./configure --with-charset=utf8の後MYSQLのコンパイル中です。

CPU ATOMで遅い・・・もう30分経ったけどコンパイル終わらない。
2113:2011/01/23(日) 21:47:43 ID:yOYPt3h9
Make installでうまくいかない・・・

でも、別の方法で解決できました。
mysql_set_character_set(&mysql_buf, "utf8");
を入れたら、ちゃんと日本語文字列をselectで取得できるようになりました。

22NAME IS NULL:2011/01/23(日) 22:10:38 ID:???
それが一番の正攻法だと思うぞ
2313:2011/01/24(月) 00:24:43 ID:F93vBYzp
結局、目的を達成できました。
スレ違いなので詳しくは書かないけど、
Linuxで録画サーバを立てています。epgrecというアプリを使っています。
MYSQLで全ての番組情報、録画情報の管理をやります。
私はそこから録画情報を引っ張ってきて、ファイル名を変えてみたり番組のジャンル別に
シンボリックリンクを張ってみたりするツールを作りました。
変なところではまったけれど、予定どおり、日曜日中に終わってよかったよかった。ありがとうございました。
246:2011/01/24(月) 10:53:04 ID:???
>>7
ありがとうございます。
勉強になりました。
25NAME IS NULL:2011/01/24(月) 13:17:30 ID:4vFB0iAi
MySQLが立ち上がりません。
root権限で実行しております。

---
# /etc/init.d/mysqld start

MySQL Daemon failed to start.
mysqld を起動中: [失敗]

# tail /var/log/mysqld.log

110124 13:12:11 InnoDB: Shutdown completed; log sequence number 0 44233
110124 13:12:11 [Note]
110124 13:12:11 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

# ls -la /var/run/mysqld/mysqld.pid

drwxr-xr-x 2 mysql mysql 4096 12月 17 02:51 mysqld
---

my.cnfを見たところ、mysqlユーザとして実行するようになっていたので、
書き込み権限はあると思います。

mysqldを実行したのに、なぜmysqld_safeで実行されるのでしょうか。
よろしくお願いします。
OS: CentOS 5.5
26NAME IS NULL:2011/01/24(月) 18:55:51 ID:???
/etc/init.d/mysqldを叩いてmysqld_safeが実行されるのは正常
mysqld.logのもっと上の方を見ないとわからん
27NAME IS NULL:2011/01/24(月) 19:03:37 ID:4vFB0iAi
---
# service mysqld start

MySQL Daemon failed to start.
mysqld を起動中: [失敗]

# cat /var/log/mysqld.log

110124 18:59:48 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
110124 18:59:49 [Note] Plugin 'FEDERATED' is disabled.
/usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist
110124 18:59:49 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
110124 18:59:49 InnoDB: Initializing buffer pool, size = 8.0M
110124 18:59:49 InnoDB: Completed initialization of buffer pool
110124 18:59:49 InnoDB: Started; log sequence number 0 44233
110124 18:59:49 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't
exist
110124 18:59:49 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
---

これでわかりますでしょうか。
mysql_upgradeを実行した場合は

---
# mysql_upgrade

Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) when trying to connect
FATAL ERROR: Upgrade failed
You have new mail in /var/spool/mail/root
---

となります。
28NAME IS NULL:2011/01/24(月) 19:08:08 ID:???
すいませんちょっと教えてください。
初めてMySQLをインストールしたのですが、
外部からODBC経由でMySQLに接続しようとすると
以下のようなエラーが出て、接続できません。

Connection Failed: [HY000] [MySQL][ODBC 5.1 Driver]Can't get hostname for your address

なお、MySQL5.5 を WindowsXP SP3 にインストールしています。
Localhostから接続すると問題なく接続できました。
(CSEおよびACCESSで接続してOKでした。レコードの修正も可能でした。)

ググってみたところ、
my.cnfファイルのとある箇所を修正するような記述が散見されたのですが、
わたしのサーバにはmy.cnfが見当たりません。
サンプルファイルも見当たりません。

なお、ユーザの接続設定は以下のようにしています。

mysql> select user,host,password from mysql.user;
+----------+-----------+-------------------------------------------+
| user | host | password |
+----------+-----------+-------------------------------------------+
| root | localhost | ***************************************** |
| testuser | % | ***************************************** |
| | localhost | |
+----------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

どちらのユーザで接続しても失敗します。

なお、ファイヤウォールやアンチウィルス等のアプリケーションはすべてOFFにしています。

以上、なにかアドバイスをいただければ幸いです。
よろしくお願いいたします。
29NAME IS NULL:2011/01/24(月) 21:27:24 ID:???
windowsにインストールしてんだったら my.ini なんじゃ?

標準でインストールしてんだったら
C:\Program Files\MySQL\MySQL Server 5.5\
にあると思うけど

5.5になってるかどうかは知らないけどオレの5.1では Server 5.1\ってなってたからそうかなと w
3028:2011/01/24(月) 21:49:28 ID:???
>>29

はい。
と思ってmy.iniの中で「bind-address = 127.0.0.1」を探してみたのですが、無いのです。

それ以外にも↓などを参考にしながらやっているのですが、駄目です・・・_| ̄|○

ttp://ameblo.jp/tetsuya-staff/entry-10139707964.html
3129:2011/01/24(月) 22:16:00 ID:???
エラーメッセージでぐぐったらちょうどこんなのが出てきたけど

http://bugs.mysql.com/bug.php?id=52923
Inadequate documentation of "Can't get hostname for your address" error
3228:2011/01/24(月) 23:05:40 ID:???
>>31

俺の拙い英語力だと理解に時間がかかりそうな文章なのですが、
斜め読みした結果・・・・・・

つまり・・・バグ? ってことですか?

しらべたら私のの使っているバージョンは「5.5.8」でした。
33NAME IS NULL:2011/01/25(火) 03:09:52 ID:???
>>27
/etc/my.cnf の [mysqld] セクションに
skip-grant-tables
をつけてもう一回service mysqld startを実行。

起動したらmysql_upgradeをかける。
あとmysql_upgradeはOSのmysqlユーザで実行すること。

最後まで通ったらservice mysqld stopして
skip-grant-tablesの記述を削除。
34NAME IS NULL:2011/01/25(火) 07:52:00 ID:KWJnChon
>>33
おぉ!?
その方法で実行できました!
ありがとうございます!
すみませんが、理由教えてもらうことってできますか?
35NAME IS NULL:2011/01/25(火) 11:47:45 ID:???
・mysql_upgrade実行しろってログに書いてあったのでする
・mysql_upgradeはmysqldが起動していないと動かない
・mysqldはmysqlデータベース内のユーザー認証関連テーブルが古くて起動できない状態
・そこでskip-grant-tablesでユーザ認証機能をOFFにして起動させる
・起動したらmysql_upgradeを実行して各種内部テーブルを直す
・直った後はskip-grant-tablesは外してよい
まあハマりどころかもしれない
36NAME IS NULL:2011/01/25(火) 21:58:35 ID:xwMatVZn
SELECT `a` FROM `table` WHERE `key`='aaa' or `key`='bbb' or `key`='ccc'
SELECT `a` FROM `table` WHERE `key` IN ('aaa', 'bbb', 'ccc')

同じ列をキーに、OR検索をしているのだけど、filesortになってしまう。
where in と or 両方試したのですが、複数指定したとたんにインデックスが使われなくなる。
a列、key列にインデックス作成済み。

実際の運用時、OR検索は多くなると100を超える可能性があるかもしれません。
今の状況だとまず実用は無理なのですが、いい方法はないでしょうか。
3736:2011/01/25(火) 22:04:41 ID:???
ざっと思いついた1つの方法で、
mysqlだけで解決させるのとは違うけれど、

SELECT `a` FROM `table` WHERE `key`='aaa'
SELECT `a` FROM `table` WHERE `key`='bbb'
SELECT `a` FROM `table` WHERE `key`='ccc'

インデックスが有効になる単一のキー検索をした結果を、
cacheliteなどで一定時間保存しておき、
同じキーへのアクセスは再利用して、出力時に結果を結合する。

ということを思いつきましたが。
mysqlクエリで解決する方法がありましたらぜひ…。
38NAME IS NULL:2011/01/25(火) 23:18:33 ID:???
SELECT `a` FROM `table` WHERE `key`='aaa'
UNION ALL
SELECT `a` FROM `table` WHERE `key`='bbb'
UNION ALL
SELECT `a` FROM `table` WHERE `key`='ccc';
39NAME IS NULL:2011/01/26(水) 23:02:27 ID:???
二つのテーブルから抽出し合計値を表示したいです。
色々調べてsqlでは下記でできたのですが、
これをphpで処理をして表示させるにはどうすればいいのでしょうか?

t1
code|name|
001|aaa|
002|bbb|
003|ccc|

t2
code|suuryou|id|
001|60|aa1|
003|10|cc1|
002|30|dd1|
001|25|bb1|

やりたい事
code|name|goukei|
001|aaa|85|
002|bbb|30|
003|ccc|10|

CREATE TEMPORARY TABLE TEMP_B SELECT code, SUM( suuryou )
AS goukei
FROM t2
GROUP BY code;
SELECT a.article, goukei
FROM t1 AS a
LEFT JOIN TEMP_B ON a.code = TEMP_B.code
40NAME IS NULL:2011/01/27(木) 00:33:49 ID:???
Innodb hotbackup買おうと思って予算つけたら、なんかEnterprise用サブスクリプション買わないといけなくなってんだけどー(;_;)$5,000/年なんて無理だぽ
41NAME IS NULL:2011/01/27(木) 00:34:40 ID:???
XtraBackupでがんばれ
42NAME IS NULL:2011/01/27(木) 02:37:04 ID:???
>>41
調べてみる!ありがとう!
43NAME IS NULL:2011/01/28(金) 21:15:31 ID:???
レプリケーションについて質問させてください
家庭用のLinuxパソコンとYahoo!ADSL環境にてレプリケーションの練習をしてみたいのですが出来ますでしょうか?
server-idにてサーバ毎に設定するのは分かるのですが、master-hostでマスターサーバ名 or IPアドレスを指定する所でどのようにすればいいのか分かりません
IPアドレスはモデムからの動的アドレスになっていますし、マスターの方も特にレンタルサーバ等にあげているわけでもありません
こういった自分の環境下ではどのような過程を経ればレプリケーション環境を作れルのでしょうか?
44NAME IS NULL:2011/01/29(土) 02:06:46 ID:???
初めまして。誰か助けていただけませんか。

Select結果に対してupdateを行いたいのですが、うまいコマンドが見つかりません。
代替案としてSelect結果を一時テーブルとして格納して、それに対してupdateをかければ・・・
と思ったのですが、一時的にテーブルを保存することも見つけることができませんでした。
どなたかよろしくお願いします。
45NAME IS NULL:2011/01/29(土) 04:59:05 ID:???
>>44
SELECT文の処理結果は(テーブルではなく)レコードセットでしかないから、
レコードセットをUPDATEする事そのものが不可能だよ。

もし一時テーブルを使うなら、一時テーブルへのINSERT文に
ソーステーブルへのSELECT節を組み合わせることで可能になると思う。
46NAME IS NULL:2011/01/29(土) 05:23:12 ID:???
>>44
Javaだと更新可能カーソルというのがある
http://www.techscore.com/tech/J2EE/JDBC/5.html
47NAME IS NULL:2011/01/29(土) 05:24:39 ID:???
>>43
Linuxパソコンをもう一台買うか仮想化して家庭内でやればいいと思う
48NAME IS NULL:2011/01/29(土) 12:42:40 ID:???
>>44
複雑でなければCASEやIFで対応。
49NAME IS NULL:2011/01/29(土) 14:29:18 ID:???
質問です
innodbでinnodb_file_per_tableの設定をしてテーブル毎にデータファイルを作成するようにしているのですが、
テーブル毎のデータファイルを任意のサイズまで大きくする方法はありますか?
(データファイルを大きくする理由はディスク上のファイルの断片化を避けるためです)
50NAME IS NULL:2011/01/29(土) 15:50:31 ID:???
>>45,46
迅速かつ丁寧な解答をありがとうございました。今から試してみるつもりですが、
とりあえずお礼までにとレスさせていただきます。
51NAME IS NULL:2011/01/29(土) 15:56:49 ID:???
>>49
機能としてはないと思う
ダミーデータをINSERTしてDELETEするくらいしか思いつかない
52NAME IS NULL:2011/01/29(土) 16:03:13 ID:???
>>48
誤ってアンカーを外しておりました、申し訳ありません。
回答ありがとうございました。
53NAME IS NULL:2011/01/29(土) 16:03:57 ID:???
その機能ほしいねえ
54NAME IS NULL:2011/01/29(土) 16:22:33 ID:???
innodb_autoextend_incrementがinnodb_file_per_tableのときも効くなら、
大きめの値を指定しておけば実質的にファイルの断片化を気にする必要はなくなると思う。

が、対応してないんだなー
http://bugs.mysql.com/bug.php?id=31592
55NAME IS NULL:2011/01/29(土) 18:05:28 ID:???
>>51,54
レスありがとうございます
innodb_autoextend_incrementという設定があるんですか。勉強になりました。
56NAME IS NULL:2011/01/30(日) 16:57:29 ID:???
MySQL ヤンキーDQN
PostgreSQL エリートビジネスマン

どうして差がついたのか・・・
慢心、環境の違い
57NAME IS NULL:2011/01/30(日) 17:01:38 ID:???
ヤンキーDQNの方が年収が高い業界で何を言ってるんだろうか…
58NAME IS NULL:2011/01/30(日) 21:20:08 ID:7GhU5U/J
START TRANSACTION
UPDATE t SET value=1 WHERE id=1;
UPDATE2 t SET value=1 WHERE id=3;
UPDATE3 t2 SET value=1 WHERE id=1;
COMMIT

このようにトランザクションを使った場合、
各UPDATE文が実行される際にロックを取得すると思いますが、
ロックを取得するタイミングと開放するタイミングはいつなのでしょうか?

START TRANSACTIONを開始した直後に、
tテーブルのid=1
tテーブルのid=3
t2テーブルのid=1
各行のロックを同時に取得して、COMMIT直後に全て開放する、
という認識で合ってますか?

それとも各UPDATE文が実行される時に各々取得するのでしょうか?
それだとトランザクションの意味が無いような気もしますが。
59NAME IS NULL:2011/01/30(日) 21:46:00 ID:???
それ実現するにはSTART TRANSACTION叩いた瞬間に
すべてのテーブルのすべてのレコードをロックすることになってしまうだろう

> それとも各UPDATE文が実行される時に各々取得するのでしょうか?
YES

何をやりたいかは知らんけど
START TRANSACTION WITH CONSISTENT SNAPSHOT;
を調べたら幸せになれるかも
6058:2011/01/30(日) 23:28:36 ID:7GhU5U/J
>>59

ご丁寧にありがとうございます。
でもそれだとロックを取得する意味ってあるのですか?
複数のSQL文をまとめて一つの単位として実行したいからトランザクションを使っているのに
途中で割り込まれたら意味が無いように思うのです。
それともロックとトランザクションは全く別の機能として考えた方がいいのでしょうか。
質問ばかりですみません。

START TRANSACTION WITH CONSISTENT SNAPSHOT;
これは私の環境で実行すると
Query OK, 0 rows affected
としか出てこないようです。。ドキュメント読んで勉強してみます。
61NAME IS NULL:2011/01/31(月) 00:09:53 ID:???
割り込まれたくないなら、最初に
SET TX_ISOLATION = 'SERIALIZABLE';
BEGIN;
SELECT * FROM t WHERE id = 1;
SELECT * FROM t WHERE id = 2;
SELECT * FROM t2 WHERE id = 1;
までやっておいて、それからUPDATEをかける
62NAME IS NULL:2011/01/31(月) 00:35:23 ID:???
>>60
そのトランザクションが各テーブルに最初に触るのがUPDATEの時なんだから
そこで初めてロックをかけるだけで問題ない。
仮にトランザクション開始からUPDATEまでの間に他トランザクションが
テーブルに何らかの更新を行った場合と、トランザクション開始時点から
その状態だった場合とではトランザクションの結果に差はない。
63NAME IS NULL:2011/01/31(月) 04:55:01 ID:???
失礼します。質問させてください。

Windowsのコマンドプロンプト上でjavaプログラムを実行したときMySQLの
Select文の結果が表示されるプログラムを作りたいのですがうまくいきません。
誰か教えてくれませんか?
実行例↓

C:User>java Select

+---------+-----------+
| pref_cd | pref_name |
+---------+-----------+
| 1 | 北海道 |
| 2 | 青森県 |
+---------+-----------+
64NAME IS NULL:2011/01/31(月) 11:57:41 ID:???
>>61
googleが1秒以内に検索結果を出してくるネット上で「そんなの知ってた」の後出しか…
ここまでの馬鹿は初めて見た
65NAME IS NULL:2011/01/31(月) 18:15:28 ID:???
エスパー!出番ですよー!
66NAME IS NULL:2011/02/02(水) 02:32:29 ID:???
同じテーブルをUNIONで結合すると、当然重複列が出来るわけですが、
それをサブクエリにしてSELECTすると重複が消える。

select * from (
select * from A where ...
union
select * from A where ...
) as u;

こんな感じにすると結果はdistinctされたように重複が消えています。
何故ですか???
67NAME IS NULL:2011/02/02(水) 08:06:23 ID:???
重複列じゃなくて重複行ね?
サブクエリにしなくても消えると思うけど
68NAME IS NULL:2011/02/04(金) 01:09:57 ID:aqeIqHcN
日本語文字列の前後にカーソルを動かすと、表示がずれるのですが、
対処方法はないでしょうか?

たとえば、mysql -u test -pでログインした後、
select c1 from t1 where match(c1) against('夏');
と入力して、このコマンドの結果自体は正しく表示できるのですが、履歴を使っての
日本語文字列の修正がうまくできない場合が多いです。

環境はMySQL-server-5.0.87-tritonn(Fedora14)で、
Gnome-Terminalから行っています
6968:2011/02/04(金) 01:29:01 ID:???
それから、文字コードはUTF-8を使っています。
set names utf8;しても状況に変化はありません
70NAME IS NULL:2011/02/06(日) 13:42:02 ID:???
CのAPIについてもここでいいんですか?
7170:2011/02/06(日) 13:44:35 ID:???
70ですが、総合よりもバージョンインディペンデントなスレに移動しました。
お騒がせしました。
72NAME IS NULL:2011/02/06(日) 15:46:20 ID:???
>>68
とりあえずあるあるとだけ
回避方法は私も知らない
73NAME IS NULL:2011/02/06(日) 21:46:53 ID:???
すいません、テーブルの内部結合によるSELECTはわかったのですが
逆に2つのテーブルに同じ値を挿入するときのINSERTがわかりません。

テーブルA… name_id(AUTOINCREMENT), name
テーブルB… id(AUTOINCREMENT), name_id
name_id は同じ値を持つ。

INSERT INTO テーブルA (`name_id` ,`name`)
VALUES (NULL , 'foo');

このときにテーブルBのname_idを同じにするためには
どうしたら良いのでしょうか??
74NAME IS NULL:2011/02/07(月) 00:45:21 ID:???
last_insert_idでぐぐるといいよ
75NAME IS NULL:2011/02/07(月) 07:04:34 ID:???
つまりテーブルBのname_idは、AUTOINCREMENTにする必要は無い。
というか、しちゃいけないというところでしょうか。
76NAME IS NULL:2011/02/07(月) 14:26:26 ID:???
ここってMySQL信者しかいない系?
PostgreSQLとか嫌い系?
77NAME IS NULL:2011/02/07(月) 16:43:47 ID:???
78NAME IS NULL:2011/02/07(月) 21:47:51 ID:???
phpMyAdminで標準となっている1ページ30行の表示数を
常に100行ぐらいに変えたいんだけどどこをいじるんだ?

ローカルのphpMyAdminなのでどのファイルにでもアクセスできる。
多少スレ違いですまん。
79NAME IS NULL:2011/02/08(火) 03:09:06 ID:???
rootユーザーのパスワードを設定しようと思い「mysqladmin -u root password 'root'」
としたのですが
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
とエラーがでてパスワードを設定できません、どうしたらいいのでしょうか・・・
80NAME IS NULL:2011/02/08(火) 03:37:08 ID:???
>>79
using password: YES
で試してみる。
81NAME IS NULL:2011/02/08(火) 16:27:42 ID:???
かなり大きいテーブル3GiBほどのテーブルが壊れました。
repair table hoge
としてみたのですが
Not enough memory for blob at 3607767920 (need 1851466134)
と出て失敗します。
メモリー使用量を抑えつつ
修復する方法、オプションとかってないですか?
mysqlのバージョンは4.0.27です。
さくらのスタンダードプランのレンタル鯖です。
82NAME IS NULL:2011/02/08(火) 23:07:09 ID:???
レンサバならあきらめれ。
バックアップからリストアするべし。
83NAME IS NULL:2011/02/10(木) 00:29:26 ID:???
質問です
パーティション切ったテーブルのパーティション名と区切り値を項目ごとにカラムで取得する方法はありますでしょうか?
show create tableで定義は確認できますが、パーティション名と値を個別で取得したいです。
84NAME IS NULL:2011/02/10(木) 05:34:57 ID:???
>>83

mysql> select * from information_schema.PARTITIONS where TABLE_NAME = 'ptest'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: scott
TABLE_NAME: ptest
PARTITION_NAME: p1
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: id
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: 100
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
*************************** 2. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: scott
TABLE_NAME: ptest
PARTITION_NAME: p2
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 2
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: id
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: MAXVALUE
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: NULL
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: default
TABLESPACE_NAME: NULL
85NAME IS NULL:2011/02/10(木) 16:43:45 ID:eEqqb7a6
クエリキャッシュを最近知りました。
これって、同じselect文のばあい、2回目以降は最初の結果を返すってことですよね?

マニュアルを読んでいたら以下の部分がよくわからなかったんですが
 >後でまったく同じクエリを受け取ると、サーバはそのクエリの解析と実行をもう一度繰り返す代わりに、
 >クエリキャッシュから結果を取り出します。
 >注意:クエリキャッシュから古いデータが返されることはありません。データが変更されると、
 >クエリキャッシュの関連するエントリがすべてフラッシュされます。

これは最初のselect結果がキャッシュされた後にテーブル情報がupdateやdeleteされたら
そのキャッシュは適用されないってことですか?
86NAME IS NULL:2011/02/10(木) 22:37:37 ID:???
YES
不整合は起こさないようになってる
ブログみたいに一度書いたらあとは読むだけみたいなシステム向きの機能
87NAME IS NULL:2011/02/11(金) 00:17:59 ID:???
会社のWEBサービスを初めて1人で立ち上げたのですが、MySQLの知識が無くてヒヤヒヤの毎日です。
最近やっと1日のPVが30万ぐらいになったのですが、DBバックアップを全く行っていません。
ネットで調べてみるとレプリケーションという手法でデータ冗長化するのが正攻法のようです。
稼動済みのWEBサービスをレプリケーション化しても問題起きないでしょうか?
また、正しいサービスの運営の仕方としては、やはり最初からレプリケーションするべきだったのでしょうか?
現状ではサーバー費用の問題もあり、サービス開始時は1台のサーバーにApacheもMySQLも全て詰め込んでおります。
88NAME IS NULL:2011/02/11(金) 01:23:23 ID:???
ポスグレに変えるべき
89NAME IS NULL:2011/02/11(金) 12:10:53 ID:???
>>87
>稼動済みのWEBサービスをレプリケーション化しても問題起きないでしょうか?
事前にバイナリログの設定をしていない場合、稼動中にスレーブ追加はできない

>正しいサービスの運営の仕方としては、やはり最初からレプリケーションするべきだったのでしょうか?
サービスの規模次第

技術的に頼る人がいないなら、偉い人と調整して
・毎週日曜4時にサービス停止
・mysqldを停止してdatadirをまるごとバックアップ
・5時にサービス再開
みたいなスケジュールを組んだ方がいい
90NAME IS NULL:2011/02/11(金) 15:33:51 ID:???
サービス停止するまでも無い
mysqldumpで十分だろ
91NAME IS NULL:2011/02/11(金) 22:14:59 ID:???
>>86
ありがとうございました
92NAME IS NULL:2011/02/12(土) 03:17:09 ID:???
>>90
ひどいアドバイス
それで解決するなら誰も苦労せんわ
9387:2011/02/12(土) 18:12:06 ID:???
返事が遅れてしまいすいませんでした。
返信してくれた方、ありがとうございます。

>>89
バイナリログという言葉自体初めて聞いたので、
おそらくレプリケーションは無理そうです。。

偉い人と相談して定期的にバックアップ取る方針で行きたいと思います。
cronでdatadirコピーしてしまえば自動化できそうですね!
とても参考になりました。ありがとうございました。

>>90
>>92
この方法は問題なのでしょうか?
ネットで調べるとmysqldumpという言葉もよく見たので候補にはあったのですが。
94NAME IS NULL:2011/02/12(土) 20:54:16 ID:???
mysqldumpで整合性のあるバックアップをとる場合は

a)InnoDBしか使っていない前提で--single-transactionを入れる
b)MyISAMを使っている場合は--lock-all-tablesを入れてロックをかける

のいずれかを行う必要があって、
>>87 の質問文だけではどちらが適切なのかを判断できないし
b)案は更新SQLをストップさせるので実質的にサービス停止になる。

そこまで踏み込まないと回答できないのを分かってて >>90 みたいな
答え方をすると「ひどいアドバイス」と言われる
95NAME IS NULL:2011/02/12(土) 22:28:50 ID:???
その情報をもっと引き出す為の質問者の煽り
10年前からある手法だろ…
96NAME IS NULL:2011/02/13(日) 01:23:45 ID:???
88が一番近道なのにな
97NAME IS NULL:2011/02/13(日) 06:31:57 ID:BqWPrtr4
はじめまして。完全初心者で、一昨日からxamppでmysqlを使っています。。
コマンドプロンプトでmysqlをいじり始めたのですが、
日本語表示が文字化け(全部????になってしまう)してしまいます。
ひと通り調べて、my.iniをいじっているのですが、
ここ(http://www.adminweb.jp/xampp/mysql/index4.html)や、
ここ(http://a-programmer.blog.so-net.ne.jp/2007-08-18)に書いてある方法で変更したら、
今度はxampp control panelの時点でmysqlが起動されなくなってしまいました。
コマンドプロンプトでのmysql起動時に、default-character-set=sjisと記述しても、
server charactersetとdb charactersetはlatin1のままで、
結局日本語が文字化けしたままになってしまいます。

どうすれば文字化けが解消されるのでしょうか。。
バージョンは5.5.8です。
どなたかご教授いただけたら幸いです。
よろしくお願いいたします。
98NAME IS NULL:2011/02/13(日) 06:35:10 ID:BqWPrtr4
はじめまして。完全初心者で、一昨日からxamppでmysqlを使っています。。
コマンドプロンプトでmysqlをいじり始めたのですが、
日本語表示が文字化け(全部????になってしまう)してしまいます。
ひと通り調べて、my.iniをいじっているのですが、
ここ(http://www.adminweb.jp/xampp/mysql/index4.html)や、
ここ(http://a-programmer.blog.so-net.ne.jp/2007-08-18)に書いてある方法で変更したら、
今度はxampp control panelの時点でmysqlが起動されなくなってしまいました。
コマンドプロンプトでのmysql起動時に、default-character-set=sjisと記述しても、
server charactersetとdb charactersetはlatin1のままで、
結局日本語が文字化けしたままになってしまいます。

どうすれば文字化けが解消されるのでしょうか。。
バージョンは5.5.8です。
どなたかご教授いただけたら幸いです。
よろしくお願いいたします。
99NAME IS NULL:2011/02/13(日) 08:07:19 ID:???
>>98
MySQL 5.5から、サーバの設定としてdefault-character-setは使えなくなった。
代わりにcharacter-set-serverを使う。
default-character-setはMySQL 5.1の時点で非推奨パラメータになっている。

コマンドプロンプトでのmysql起動時にdefault-character-setを指定するのは
クライアント側の設定を変えるだけなので、関係ない。
100NAME IS NULL:2011/02/14(月) 10:53:52 ID:ozbtbTzR
WorkbenchのDataModelingでDiagramを書いているのですが、複数のテーブルを同時に開く方法はありませんか?
タブみたいになっているのに、新しいテーブルを開くと既存のタブに上書きされてしまって同時に開けません。

テーブルとレイヤーとか別の種類なら同時に開けるみたいなんですが…。
編集項目が名前と色だけのレイヤーとか開けても全然うれしくないですし、こんな糞仕様とは考えにくいのですが。
101NAME IS NULL:2011/02/15(火) 22:53:59 ID:0ZefTt9S
本を読んでselectとかupdateとかのSQLは出来るようになったものの、
処理の高速化を前提にしたテーブルの効率的な構成はどうしたら良いのかわかりません。

たとえば、漠然とした質問で申し訳ないんですが、カラムが5つくらいのテーブルがあります
(構成はこんな感じで> id[int,主キー,autoincrement]/数値[int]/数値[int]/テキスト[text]/datetime)
こんなテーブルのデータが30万件に達した場合、バックアップや処理の高速化はどうしたら良いんでしょうか?

条件は以下のような状況です。
1)UPDATE処理,DELETE処理はほぼなし
2)全体へのSELECT処理はある

というのは今食べログを見てたんですが、「口コミ120万件」て書いてるんですが、
120万行のログに対して
select * from t_review where tenpoId=123 みたいなことやってるのかなぁと。
120万件なら平気だとしても1200万件になった時どうするのか、どういう処理や
テーブル構成で対応できるのか知りたいなと思いました。

“「口コミをもっと見る」ボタンを押されることは滅多にないから limit 5 で立派な対応だ”
っていうのでもわかるんですが、もっと技術的なノウハウを知りたいなと。。

本の紹介でも良いので、教えてくれると嬉しいです。
みんな、プロの人はどうやってそんなの勉強してるんですかね?
102NAME IS NULL:2011/02/16(水) 01:32:03 ID:???
キャッシュ
適切なインデックスを張る
memcached / KVS
メモリにデータが乗るかどうか(乗り切れないとHDDへの物理アクセス発生して劇遅)

などで調べてみると少し入り口が見えるかもしれません
1036:2011/02/16(水) 09:50:30 ID:XM7AGT4t
カラム数が80個ほどでレコード数が1000万件くらいのテーブルが
40個あります。
40個のテーブルには随時更新がかかる状態なんですが、
この40個のテーブルのある瞬間のデータを取得したい時って
どうすればよいですか?
データを取得するときには更新とかを行わせたくないのですが、
ロックするしか無いのでしょうか?
104NAME IS NULL:2011/02/16(水) 09:56:58 ID:???
>>101
データ件数によるパフォーマンスの劣化を気にするなら、30万件なり1200万件なり用意して
テストしてみるのが一番だと思う。

技術的にどうしているって訊かれても、実際に近いデータを用意して色々試して、EXPLAIN
でその違いを調べる、の繰り返しかな。
本とかに書いてある知識は、その調査のための手がかりかきっかけみたいなもので、そのもの
ずばりとノウハウにはあまりなってない。少なくとも自分はそう思っている。
105NAME IS NULL:2011/02/16(水) 10:12:12 ID:INPydtdt
主キーが数値で、件数が増えるごとに1,2,3,4…とauto_incrementされてくテーブルは
よくありますが、この主キーを16進数や64進数にして10進数と同じ処理を実行することは
可能でしょうか?
カラムの型をintにすると10進数になるから、他の何かにするのかと思ったんですが
調べてもわかりません。
無理でしょうか。

データのinsert時に64進数にしたidをプログラムで生成して入れていくしかない?
それじゃ auto_incrementにならないですが…
106NAME IS NULL:2011/02/16(水) 11:06:28 ID:???
intはいつから10進数になったの?
107NAME IS NULL:2011/02/16(水) 13:21:06 ID:???
phpがmysqlにデータ書き込みしてる最中に
pythonのプログラムも同じテーブルに重複して書き込みするとどうなるの?
108NAME IS NULL:2011/02/16(水) 13:57:39 ID:???
プログラムの巧拙とテーブル設計の巧拙による・・・としか言いようがないな。
109NAME IS NULL:2011/02/16(水) 14:04:33 ID:???
mysqlの排他制御を自動でしてくれるのはphpぐらい?
110NAME IS NULL:2011/02/16(水) 16:28:50 ID:???
いやトランザクションなやInnodbがやってくれるじゃん
111NAME IS NULL:2011/02/17(木) 13:53:32 ID:Q1IYVTaB
テーブルの主キー(autoincrement)のインデックスを1でなく10000からスタートさせるには
どうやったら良いんですか?
112NAME IS NULL:2011/02/17(木) 16:00:29 ID:???
ALTER TABLE tbl AUTO_INCREMENT = 10000;
113NAME IS NULL:2011/02/17(木) 16:42:45 ID:CUZWRZbZ
不要なテーブルtbを削除しようとしたところ、外部キーの関係と思われるエラーで削除できません。
制約やインデクスの削除もできないため、試しに関連のfrmファイル等を直接削除(移動)してみました。
動作上は現在のところ何ごともないようなのですが、
別に管理データが残ったりなど、何か問題起こりうるものでしょうか。
114113:2011/02/17(木) 16:49:02 ID:CUZWRZbZ
(補足)
外部キーの参照テーブルはすでに削除されているらしく
tbはどこからも参照されていない状況です
115NAME IS NULL:2011/02/17(木) 19:27:42 ID:???
>>112
ありがとうございました
116NAME IS NULL:2011/02/17(木) 22:12:38 ID:???
FROMがFORMになって全然気づかなくて困ったことあるヤツ挙手
117NAME IS NULL:2011/02/17(木) 22:38:15 ID:???
mysqlは

fromキーワードが指定の位置にありません

って言われないのか
118NAME IS NULL:2011/02/18(金) 00:42:13 ID:???
接続時間・負荷テストをしたいんですが、
みなさん数万件レベルのデータってどのように取得しているんでしょうか?

MySQL データ 数万件 サンプルあたりで調べてもヒットせず…
119NAME IS NULL:2011/02/18(金) 01:07:58 ID:???
>>118
つ wikipedia
120NAME IS NULL:2011/02/18(金) 01:11:53 ID:???
趣旨がよく分からん
プログラムでランダムに文字列作ってinsertするんじゃ駄目なのか?
数万行のinsertなら数秒で終わるだろ
121NAME IS NULL:2011/02/18(金) 01:32:19 ID:???
適当に数十件程度の元データを作って、select,insertを繰り返していけば
倍々に増えていくから何件だろうが
作業自体は簡単。
122NAME IS NULL:2011/02/18(金) 02:18:32 ID:AKSHwj8u
sqlでjavaの変数を参照するにはどうすればいいですか?
123NAME IS NULL:2011/02/18(金) 23:57:07 ID:nVNzwfTM
MySQL5+PHP5で勉強している初心者です。
現在、架空の倉庫を想定して勉強しているのですが、
UNIONした後にJOINするとこでつまずいています。
phpで実行する前にphpmyadmin上でテストしているのですが…

<商品リストテーブル>
商品ナンバー,商品名
<在庫テーブル>
商品ナンバー,ロットナンバー,在庫数
<出庫テーブル>
商品ナンバー,ロットナンバー,出庫数

上記のような3つのテーブルを用意しています。
まず、商品ナンバー毎の総合計数(在庫合計-出庫数)を出したかったので

SELECT 商品ナンバー,SUM(在庫数) as 在庫合計 FROM (
SELECT 商品ナンバー,在庫数 FROM 在庫テーブル
UNION
SELECT 商品ナンバー,-(出庫数) as 在庫数 FROM 出庫テーブル
) as test group by 商品ナンバー

で出庫データを反映させた現在庫数が表示されるところまで出来ました。
で、最終目的としては
商品ナンバー,商品名,在庫合計
と表示させたいので
商品リストテーブルをJOINしたいのですがなかなかうまくいきません。
どうすれば最終目的に辿りつけるのでしょうか?
ご教示お願い致します。
124NAME IS NULL:2011/02/19(土) 00:55:58 ID:???
> 商品リストテーブルをJOINしたいのですがなかなかうまくいきません。

どのようにうまく行かないのですか?
どんなSQLを書いてみたかもわからないから応え難いです
125123:2011/02/20(日) 01:44:29.68 ID:???
言葉足らずで申し訳ありませんでした
>>123から試行錯誤した結果、
SELECT * FROM 商品リストテーブル RIGHT JOIN(
SELECT 商品ナンバー,SUM(在庫数) as 在庫合計 FROM (
SELECT 商品ナンバー,在庫数 FROM 在庫テーブル
UNION
SELECT 商品ナンバー,-(出庫数) as 在庫数 FROM 出庫テーブル
) u1 group by 商品ナンバー) as test ON 商品リストテーブル.商品ナンバー=test.商品ナンバー

上記で一応は期待する結果が得られましたが、
これでいいものなのでしょうか?
126NAME IS NULL:2011/02/20(日) 02:42:20.03 ID:???
>>123
「マイナス出庫数」を並べてSUMを取るって筋悪じゃね

mysql> SELECT * FROM item;
+---------+-----------+
| item_no | item_name |
+---------+-----------+
|    1 | apple   |
|    2 | orange  |
+---------+-----------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM stock;
+---------+--------+-----------+
| item_no | lot_no | stock_qty |
+---------+--------+-----------+
|    1 |   1 |    100 |
|    1 |   2 |    50 |
|    2 |   1 |    80 |
|    2 |   2 |    40 |
+---------+--------+-----------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM delivery;
+---------+--------+--------------+
| item_no | lot_no | delivery_qty |
+---------+--------+--------------+
|    1 |   1 |      15 |
|    1 |   2 |      25 |
|    2 |   1 |      35 |
|    2 |   2 |      45 |
+---------+--------+--------------+
4 rows in set (0.00 sec)

SELECT i.item_no, i.item_name, s.s_q - d.d_q total FROM item i,
(SELECT item_no, SUM(stock_qty) AS s_q FROM stock group by item_no) s,
(SELECT item_no, SUM(delivery_qty) AS d_q FROM delivery group by item_no) d
WHERE i.item_no = s.item_no
AND s.item_no = d.item_no
;

+---------+-----------+-------+
| item_no | item_name | total |
+---------+-----------+-------+
|    1 | apple   |  110 |
|    2 | orange  |  40 |
+---------+-----------+-------+
2 rows in set (0.00 sec)

こんな感じ
127NAME IS NULL:2011/02/20(日) 14:42:59.29 ID:???
どなたか以下の問題エスパーしていただけないでしょうか。

InnoDBでINNER/LEFT OUTER JOINを30くらい(大半はINNER JOIN。ネストしてるものも有り。)つないでるSELECTが
もっさりしてます。

EXPLAINで確認しましたがtypeは全てeq_refでした。
profilingで見てみるとstaticticsという部分が99%以上時間を占めているのですが
パラメータ設定などで見直すべきところはどこでしょうか…?

innodb_buffer_pool_sizeをデフォルト値から増加させたところ若干は改善しましたが、本当に若干でした。
join_buffer_sizeなど、説明を読む限り今回関係なさそうなパラメータも増やしてみたりしましたが、案の定意味が無いようでした。


また、上のクエリにさらにLEFT OUTER JOINを1つ(typeはref)を加えると
応答しなくなりました…

1つのテーブルにはそれぞれ数件程度しか登録しておらず、SELECTの結果も10件未満になるようなデータでテストしています。
試しにOracle XEで同じデータに同様のSELECTを投げてみると瞬殺でした。
MySQLのバージョンは5.1/5.5で試しましたがいずれも同じ結果でした。
128NAME IS NULL:2011/02/20(日) 20:15:00.19 ID:???
>>127
30クエリバラバラにしたほうが早そうだな。
129NAME IS NULL:2011/02/20(日) 21:09:43.08 ID:???
1つのテーブル内にあるフィールド2つをまとめて
ひとつユニークキーみたい(重複不可能)に
したいのですが、どうやるのでしょうか?
MyISAMです。
130NAME IS NULL:2011/02/20(日) 22:25:58.89 ID:???
131NAME IS NULL:2011/02/21(月) 08:08:01.12 ID:???
>>127
MySQLでテーブル二桁JOINする時点でたぶんダメ。
Oracleと同じJOIN順になるようにFROM句並べ替えてSTRAIGHT_JOINつけてみて、
改善されないようならOracle買うかPostgreSQLで。
132NAME IS NULL:2011/02/23(水) 23:45:12.50 ID:wqoyNLa8
質問させてください。
shell> mysql -u root -p
としてパスワードを入力すると接続ができるのですが、
shell> mysql -u root -p < dump.sql
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

とリストアしようとすると、はじかれてしまいます。
これはなぜでしょうか。お願いいたします。
133NAME IS NULL:2011/02/24(木) 00:10:29.12 ID:???
>>132

mysql -u root -pパスワード < dump.sql

だったらどうなる?
134NAME IS NULL:2011/02/24(木) 04:52:33.89 ID:???
>>133
ありがとございます
135NAME IS NULL:2011/02/24(木) 15:00:28.34 ID:???
「MySQLは1つのクエリーで1つのテーブルに対し、1つのインデックスしか機能しない」

というのを見かけたのですが
これって5.1でもそうなのでしょうか?

1つのテーブルに複数のインデックスをつけても意味が無いというわけ?
136NAME IS NULL:2011/02/24(木) 23:38:36.59 ID:???
>>135
INDEX MERGEは前からあるので「1つのインデックスしか〜」は嘘。
http://dev.mysql.com/doc/refman/5.0/en/index-merge-optimization.html

ただ個人的にINDEX MERGEで速くなった経験はないな。OracleでもMySQLでも。
手抜きしないで複合INDEX作った方がいい。
137127:2011/02/25(金) 00:19:10.67 ID:???
>>129>>131
クエリをバラすと、テストデータ程度の件数に置いては他のDBMSと遜色ないレベルに
なることがわかりました。

が、データ量が増えた際の不安が残っておりますので、他のプロダクトへの
乗り換えも含めて検討したいと考えています。

ありがとうございました。
138NAME IS NULL:2011/02/25(金) 10:37:31.19 ID:+dGHTk5o
今まで5.1.53とか使っていたのですが、MySQLの最新版5.5.9をtarで取りにいき
./configureしようとしたらコマンドが見付かりませんと出ました
インストール方法変わったんですか?
どうしても出来ないのですが

cmakeとかになったとか見つけましたが、centOSにはリポジトリにcmakeは無いですし、コンパイル時の引数も今までの
が使えなくなりそうだし
139NAME IS NULL:2011/02/25(金) 19:05:47.75 ID:???
Aテーブルに、
c1, c2, c3, c4, c5, c6
という6個のカラムがあり、
このうち3個以上がnullでない行を取り出したいのですが、
SQLでどう表現すればいいのか分かりません。
分かる方がいましたら教えてください。お願い致します。
140NAME IS NULL:2011/02/25(金) 19:51:46.84 ID:???
>>138
CentOSならRHEL用のRPMを使えばいいのでは
141NAME IS NULL:2011/02/25(金) 19:59:10.48 ID:???
>>139
WHERE IF(c1 IS NOT NULL, 1, 0)
+ IF(c2 IS NOT NULL, 1, 0)
+ IF(c3 IS NOT NULL, 1, 0)
+ IF(c4 IS NOT NULL, 1, 0)
+ IF(c5 IS NOT NULL, 1, 0)
+ IF(c6 IS NOT NULL, 1, 0) >= 3
142NAME IS NULL:2011/02/25(金) 23:46:16.51 ID:???
>>141
頭いいな
143NAME IS NULL:2011/02/26(土) 01:44:39.24 ID:???
へーこんな書くんかー
144140:2011/02/26(土) 02:10:28.43 ID:???
>>141
ありがとうございました!
無事期待通りの動作を実現できました。
JOINとかサブクエリとかごちゃごちゃ使わないと無理だと思っていたので目から鱗でした。
145139:2011/02/26(土) 02:11:04.37 ID:???
すいません名前間違えました。
146NAME IS NULL:2011/02/26(土) 14:32:00.34 ID:???
>>141
Excel VBAだなw
147NAME IS NULL:2011/02/26(土) 20:51:10.32 ID:+NrYsy5E
>>103
InnoDBなら、トランザクション分離レベルを適切に設定してあげればできそう。
148NAME IS NULL:2011/02/27(日) 00:47:46.93 ID:???
現場で使えるSQLという本のP221の
「商品IDを引数で指定し、その卸単価を商品マスタから取得するストアドプロシージャを作成せよ
ただし、卸単価は引数に格納し、該当商品が無い場合は卸単価に-1、その他のエラーの場合は-2を格納せよ」
という問題にて、色々と試しまくって、結局
DROP PROCEDURE SP;
DELIMITER $$
CREATE PROCEDURE SP ( IN id int, OUT price int )
BEGIN
DECLARE CONTINUE HANDLER FOR SQLWARNING SET price = -2;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET price = -1;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET price = -2;
SELECT 卸単価 INTO price
FROM 商品マスタ
WHERE 商品ID = id;
END $$
DELIMITER ;
CALL SP(15, @price);
SELECT @price;
とし-1が表示されました。
しかし、CALL SP(a, @price); 等とすると、-2と表示されるのかと思ったら、普通にエラーが出ました。
自分のSQL文がどこが間違っているのかご指摘願えませんか?
そもそも、-2を出力するような、その他の例外と言うのがどういう状況の事を言っているのか分かりません。
149NAME IS NULL:2011/02/27(日) 11:09:21.45 ID:???
既存のテーブルのcreate文を確認する方法ってありますか?
ご存知でしたら教えていただきたいです。
150NAME IS NULL:2011/02/27(日) 11:21:54.63 ID:???
>>149 バックアップの中身を見たことあるか?
151NAME IS NULL:2011/02/27(日) 15:07:40.37 ID:???
>>150
どうやってバックアップとるんですか?
って聞いてくるだろ。

MySQLのデータフォルダで
rm -rf ./*
だな。/じゃないから優しいだろ。
152NAME IS NULL:2011/02/27(日) 15:45:54.90 ID:???
>>149

>>150
mysqldump でバックアップを取得すれば、テーブルのCREATE文を確認できると言いたいのですね?

>>151
かなり優しいですね。これなら心も体もスッキリしますねw
153NAME IS NULL:2011/02/27(日) 17:22:58.11 ID:???
MySQL Community Server 5.5.9のSolaris 10 x86_64用パッケージで
DTrace使おうとしてるんだけど、mysqlプロバイダというやつが動きません。

# dtrace -p 741 -n 'mysql$target:::handler-rdlock-start'
dtrace: invalid probe specifier mysql$target:::handler-rdlock-start: probe description mysql741:::handler-rdlock-start does not match any probes

pidプロバイダなら動いてます。

# dtrace -p 741 -n 'pid$target::*ha_external_lock*:entry'
CPU ID FUNCTION:NAME
0 65526 __1cHhandlerQha_external_lock6MpnDTHD_i_i_:entry

何か設定が必要なんでしょうか?
154NAME IS NULL:2011/02/27(日) 22:48:48.95 ID:???
>>149
show create table テーブル名
155NAME IS NULL:2011/03/02(水) 01:00:20.20 ID:???
5.5.8のファイル出力で権限エラーになります。

select * from TABLEはOKですが、
select * from TABLE OUTFILE 'C:/tmp/FILE.TXT' で次のエラーになります。
ERROR 1045 (28000): Access denied for user 'ユーザ'@'%' (using password: YES)

Windows7でフォルダの権限はフルコントロールにしています。
フォルダの区切りは、/のほか\と\\でも試していますが同じです。

MySQLのユーザと同じ名前のアカウントはWindows7側にはありません。
156NAME IS NULL:2011/03/02(水) 07:26:21.87 ID:???
MySQL側でそのMYSQLユーザーに FILE権限を与えていないんでしょ
157NAME IS NULL:2011/03/02(水) 07:29:11.58 ID:???
>>155

ttp://dev.mysql.com/doc/refman/4.1/ja/select.html
>この形式の SELECT を使用するには、サーバホストに対する FILE 権限が必要となる。
158NAME IS NULL:2011/03/02(水) 20:40:40.41 ID:???
すいません自己解決しましな
159NAME IS NULL:2011/03/03(木) 12:15:52.30 ID:???
mysl 5.5.8 perl 5.12.3環境で日本語utfコードを扱っています。

DOS画面で、set names sjisは有効になりますが、
perl+dbiで、set names sjisがうまく効きません。
OUTFILEで出力しても、UTF8のままです。

何か他の設定が必要なのでしょうか?
160NAME IS NULL:2011/03/03(木) 12:39:35.13 ID:???
mysql 1.7.3をwindows7で使っているんですが
my.iniを変更しても、言語がlatin1のままです
環境変数も設定しましたが変わりませんでした

どなたかお願いします。
161NAME IS NULL:2011/03/03(木) 14:25:11.80 ID:???
MySQL5.5って実際のところパフォーマンス的にどうなの?
快適になってるの?
検索してもあんまり情報ないから使ってる人いたら教えて欲しい。
162NAME IS NULL:2011/03/03(木) 18:54:07.72 ID:???

nullポ
163NAME IS NULL:2011/03/04(金) 04:39:19.52 ID:???
EXPLAINすると確かにBatched Key Accessが効いてるようだ。
が、実速が変わったとはとても思えない。
164NAME IS NULL:2011/03/04(金) 15:38:52.35 ID:???
すみません、C言語ライブラリの情報が少ないので質問させてください。
MySQL5.077、InnorDBのテーブルに、C言語のアプリケーションと、
Javaサーブレットから接続しています。

C言語側はmysql_real_connect()で接続後、select文しか発行しません。
Java側で追加、削除を行っています。

で、この環境でJava側でinsertした行をC側で検索しようとすると、
値を取得できない問題にはまってます。

eclipse等から同じ状況(先に接続した後insert、selectで追加された行を検索)で
結果が帰ってくるので、C側の問題かと思うのですが、
何か原因として思い当たるものはあるでしょうか?

キャッシュを疑ってmysql_refreshやFLUSH PRIVILEGESを試してみましたが、
効果はありませんでした。
165NAME IS NULL:2011/03/04(金) 16:48:23.89 ID:???
>>164
きっと凡ミスだと思うけど
・JavaでINSERTして別のJavaでSELECTするとどうなるか?
・InnoDBの場合COMMITしてるか?
ぐらい
166164:2011/03/04(金) 18:36:40.81 ID:???
>>165
アドバイスありがとうございます。
>・JavaでINSERTして別のJavaでSELECTするとどうなるか?
>・InnoDBの場合COMMITしてるか?
どちらも問題なしです。

C側もアプリを再起動するとSELECT結果が帰ってくるので、
どこかがキャッシュしてそうな感じなんですが・・・

普通は繋ぎっぱなしで問題ないものですよね?
167NAME IS NULL:2011/03/08(火) 15:48:31.75 ID:8rW/XaEj
一度作成したユーザの権限を削除するにはどうしたらいいですか?

grant all privileges on *.* to user@"host-name" identified by "password";
flush privileges;
してから
revoke all privileges on *.* from user@"host-name" identified by "password";
flush privileges;
しても、
show grants for user@"host-name";
で確認すると
GRANT USAGE ON *.* TO 'user'@'host-name' IDENTIFIED BY PASSWORD '*pass'
とのこったままになります。
168NAME IS NULL:2011/03/08(火) 16:21:09.08 ID:???
>>167
その状態でどのテーブルに対する何の権限が残っている?
権限のあるほかのユーザーをSHOW GRANTSして
表示内容を比較してみると?

あ、ユーザー自体を削除したいならDROP USERでおk
169NAME IS NULL:2011/03/08(火) 18:09:21.61 ID:???
ニコニコ大百科というサイトがデータベースエラーで落ちたみたい


エラーメッセージ

データベースにエラーが発生いたしました。もう1度リロードしてみてください。(Can't connect to MySQL server on '192.168.69.101' (111))


ダメじゃん
170NAME IS NULL:2011/03/08(火) 19:40:23.40 ID:8rW/XaEj
>>168
レスどもです。
show grants;
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD '*pass'

show grants for user@"host-2";
GRANT ALL PRIVILEGES ON *.* TO 'user'@'host-2' IDENTIFIED BY PASSWORD '*pass'

show grants for user@"host-2のipアドレス";
GRANT ALL PRIVILEGES ON *.* TO 'user'@'host-2のipアドレス' IDENTIFIED BY PASSWORD '*pass'

こんな感じです。
>あ、ユーザー自体を削除したいならDROP USERでお
drop user user@"host-2のipアドレス"で
>GRANT ALL PRIVILEGES ON *.* TO 'user'@'host-2のipアドレス' IDENTIFIED BY PASSWORD '*pass'
これが消えました。

これが理由でしょうか?
http://dev.mysql.com/doc/refman/5.1/ja/revoke.html
"REVOKE は権限を削除しますが、user テーブル エントリのドロップはしません。それは DELETE か DROP USER を利用して"
171NAME IS NULL:2011/03/08(火) 20:29:05.81 ID:???
usage権限って、全ての権限無しって意味っしょ。
http://dev.mysql.com/doc/refman/4.1/ja/grant.html

だから、
>revoke all privileges on *.* from user@"host-name" identified by "password";
の後には、
>GRANT USAGE ON *.* TO 'user'@'host-name' IDENTIFIED BY PASSWORD '*pass'
これで当たり前。
172NAME IS NULL:2011/03/08(火) 20:39:57.43 ID:???
>>171
ありがとう。
>>170は無視しちゃってください!
173NAME IS NULL:2011/03/10(木) 16:42:40.89 ID:mHQFBpTb
質問させてください
selectしたデータを一部だけ別のテーブルに入れる方法ってありますか?

例:insert into table2 (aaa,bbb,ccc) select aaa as aaa,bbb as bbb,ccc as ccc from table1
この場合table1のデータがすべてtable2に入るのでaaaだけ別のデータを入れたいと思っています。
よろしくお願いします。
174NAME IS NULL:2011/03/10(木) 17:01:31.35 ID:???
>>173
>selectしたデータを一部だけ別のテーブルに入れる方法ってありますか?
>この場合table1のデータがすべてtable2に入るのでaaaだけ別のデータを入れたいと思っています。
言ってる事違ってね?
175NAME IS NULL:2011/03/10(木) 19:44:02.96 ID:???
あるクエリを実行して、mysqldumpみたいなスタイルの
出力を取得する方法はありますか?

SELECT * FROM hoge WHERE a='unko';

INSERT INTO hoge VALUES (a,b) AS
('unko',2),('unko',3),('unko',5),('unko',7);
みたいな感じで取得したいかなーって
176173:2011/03/10(木) 20:52:37.61 ID:mHQFBpTb
>>174
間違ってました。ごめんなさい。
一部じゃなくて二部です。と言うことでよろしくお願いします。
177NAME IS NULL:2011/03/14(月) 04:35:03.16 ID:gnWaLDBM
#sql-123_456e7.MYD
#sql-123_456e7.MYI
#sql-123_456e7.frm

のようなファイルがデータベースディレクトリにあり、容量をかなり食っています。
このファイルは何でしょうか?
178NAME IS NULL:2011/03/14(月) 07:31:07.78 ID:???
>>177
各ファイルのサイズを教えてください。
179NAME IS NULL:2011/03/14(月) 09:07:03.55 ID:???
>>177
リペア中に強制終了したとき、そんな名前のファイルが残ってたような気がする。
180NAME IS NULL:2011/03/14(月) 21:03:11.99 ID:???
>>178
1GBを超えてる。

>>179
インデックス作成時のテンポラリ、という情報が見つかりました。
強制終了時の残骸かな…と思ったのでさっくり消しました。
データベースは問題なく動いてます。
181NAME IS NULL:2011/03/15(火) 10:59:13.05 ID:???
>>180
DB稼動中に消した?それとも停止してから消した?
182NAME IS NULL:2011/03/15(火) 15:50:21.62 ID:???
>>181
止めてから消去。
rm -rf "#sql-123_456e7.MYD" で。
183NAME IS NULL:2011/03/15(火) 23:49:40.63 ID:???
なんで -r が要るんだ?
184NAME IS NULL:2011/03/17(木) 15:29:45.23 ID:???
MySQLからフォークした「Drizzle」、初のGAリリース
http://sourceforge.jp/magazine/11/03/17/050217
185NAME IS NULL:2011/03/18(金) 19:50:16.11 ID:???
perlのモジュールのDBD::mysql が正しくインストールできません。
この場所にどなたかお詳しい方はおられますでしょうか?
186NAME IS NULL:2011/03/22(火) 01:03:40.42 ID:???
187NAME IS NULL:2011/03/25(金) 01:33:34.95 ID:NIeHWslM
基本的なこと聞きますけど、テーブルをMyISAMにしている場合、
同時接続が100以上あった時、データが壊れたり
INSERT/UPDATEが正しく行えない可能性はありますか?
188NAME IS NULL:2011/03/25(金) 06:31:03.41 ID:???
>>187
素人だけど、
たぶんselectは大丈夫じゃないかな。書き込みはテーブルロックだから待たされる可能性ありか。
どんくらいで待ちが発生するかはやったことないからわからんが。

MySQL 5.5からはinnoDBがデフォルトだし、MyISAMでないといけない場合(全文検索とか)以外はinnoDB推奨らしい。
189NAME IS NULL:2011/03/25(金) 11:10:00.55 ID:???
>>188
innoDB推奨になるんですか!?
自分はてっきりMyISAMが推奨(多く使われている)とばかり思っていました。

MyISAMでもLOCK〜UNLOCKの処理をするとロックをかけられるようですが、
ファイルロックと同じような感じだと思うので、>>187の点はどうなのかな?
っと思い、質問しました。やはりinnoDBのトランザクションが良いんですかね
190NAME IS NULL:2011/03/25(金) 11:16:40.29 ID:???
いつの話してんだw
191NAME IS NULL:2011/03/25(金) 17:15:58.60 ID:???
8年前だな
192NAME IS NULL:2011/03/25(金) 22:45:25.80 ID:???
読み込み中心なら、速度重視であえてMyISAMを選ぶこともあるけどね
193NAME IS NULL:2011/03/26(土) 01:11:21.59 ID:???
Webアプリなんかでアクセスログを保存する時は
テーブルをInnoDBにして

BEGIN→INSERT→COMMIT

としてるけど、間違ってないよね?ね?
194NAME IS NULL:2011/03/26(土) 01:14:17.45 ID:???
アクセスログをDBに突っ込んで何がしたいの?
195NAME IS NULL:2011/03/26(土) 02:21:49.31 ID:???
1つのSQLなら別にトランザクション使わなくてもいいのでわ。
196NAME IS NULL:2011/03/26(土) 02:27:39.83 ID:???
>>194
自分もDBにいれてるよ。そんなアクセス多くないから。
Archiveエンジンで。
197NAME IS NULL:2011/03/26(土) 02:31:34.91 ID:???
OSSのシステム見ると、InnoDBにしているの多いよね
198NAME IS NULL:2011/03/26(土) 07:53:47.38 ID:???
ログ程度ならMyISAMにしてるな。
トランザクションも制約も要らんもんね。
199NAME IS NULL:2011/03/26(土) 15:38:48.01 ID:???
UTF-16は使えますか?
200NAME IS NULL:2011/03/26(土) 18:03:17.00 ID:???
>>198
そうなの?俺はMyISAMのログテーブルを
これからInnoDBにしてトランザクションかけようかと悩んでいるんだけど
201NAME IS NULL:2011/03/26(土) 19:05:29.35 ID:???
>>199
MySQL 5.5から対応してる
202NAME IS NULL:2011/03/26(土) 19:34:37.27 ID:???
>>200
ログ以外のテーブルとの整合性が必須なほど大事な案件だったら、それもいいんじゃない?
203NAME IS NULL:2011/03/26(土) 21:31:13.67 ID:???
>>200
ログ程度になんでトランザクションが必要なんだ?
アクセス過多でMyISAMのテーブルロック回避のためinnoDBの行ロックに変えるってんならわかるけど。
204NAME IS NULL:2011/03/26(土) 22:21:38.09 ID:???
>>202-203
オンラインゲームみたいなの作ってて、ポイントのログを取得してるんだよ。
誰がどのゲームでいくらのポイントを得たかっていうログを。

今まではMyISAMで問題無さそう(に見えた)だんだけど、
今回リニューアルするから、どうしようかなと悩んでる。
リニューアルはアクセス過多が原因だったわけだし。
205NAME IS NULL:2011/03/26(土) 22:25:21.09 ID:???
そりゃ単なるログじゃなくて、機能部だろ。
206NAME IS NULL:2011/03/27(日) 00:55:22.21 ID:???
>>201
ありがとうございます。
207NAME IS NULL:2011/03/28(月) 13:44:15.02 ID:???
mariadbの話題はこのスレでいいの?
208KOUZOU TAKAHASHI:2011/03/28(月) 16:13:38.27 ID:cdA0H2BD
MYSQLの質問はここでいいですか?
よろしくお願いします
209NAME IS NULL:2011/03/28(月) 17:14:28.22 ID:???
>>208
まず日本語を話せるようになってから来てください。
210NAME IS NULL:2011/03/28(月) 17:32:39.88 ID:???
>>208
知恵袋か教えてGooへ行ってらっしゃい!
211NAME IS NULL:2011/03/28(月) 23:50:40.86 ID:???
おまえらMySQLやってるのにMariaDBの話題がないのは事情を知らないだけ?
212NAME IS NULL:2011/03/29(火) 00:10:06.12 ID:???
MySQLを実務で使っているからこそ今のところは様子見とか?
Oracleフリーである以上のメリットってなんかあったっけ?
213NAME IS NULL:2011/03/29(火) 00:13:12.72 ID:???
>>211
綺麗な姉ちゃんに育ったマイは嫁に行ったよ
ブサイクでforkなマリアは行くあてが無くてね、父ちゃんと二人暮しさ

前スレでも見たら?
214NAME IS NULL:2011/03/29(火) 00:57:52.36 ID:???
SELECTで登録済みか確認後INSERTするより、
REPLACEした方が速い、というのを見たのですが、
auto incrementする項目がある場合でも、
REPLACEは使えますか?

テーブル構造がこんな感じで…
id(auto increment), name(unique), text"
215NAME IS NULL:2011/03/29(火) 03:37:58.65 ID:???
適当なテーブル作って試してみればわかることだろ
216NAME IS NULL:2011/03/29(火) 05:27:18.65 ID:???
>>215
それを言っちゃおしまいよ。
忙しすぎてそこまで考えられんのだろう。


ほら、擁護してやったんだからなんかくれよ。
217NAME IS NULL:2011/03/29(火) 15:24:39.75 ID:???
このスレで質問書く暇はあるんだな
218NAME IS NULL:2011/03/29(火) 16:41:05.61 ID:3WiGRkt7
【OS名】Linax
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL
【質問内容】
チャーハン1
チャーハン2スペシャル
チャーハン定食1
チャーハン定食1デラックス

を引っ掛けたい

こんな感じのデータを
SELECT * FROM AAA WHERE menu LIKE 'チャーハン%'
とすると、全部マッチしますよね。
それをチャーハン1とチャーハン2スペシャルだけ引っ掛けたいんですけど
どうすればいいですか?

おねがいします。
219NAME IS NULL:2011/03/29(火) 16:58:32.77 ID:???
どういう理由で、チャーハン1とチャーハン2スペシャル
をSELECTしたいのか・・・
その脳内、意味不明

君の質問に対する一般的な回答は、
SELECT * FROM AAA WHERE menu = 'チャーハン1' OR menu = 'チャーハン2スペシャル'

こうなるな
220NAME IS NULL:2011/03/29(火) 19:29:23.61 ID:???
先頭がチャーハンで始まるデータを引っ掛けたいんです

チャーハン4とかチャーハン王様とか全部引っかかるような
221NAME IS NULL:2011/03/29(火) 20:27:11.90 ID:???
定食を抜きたいならnotかな。
チャーハンの後が漢字のを除去したいなら正規表現使う。
222NAME IS NULL:2011/03/29(火) 20:53:27.20 ID:???
>>220
> チャーハン4とかチャーハン王様とか全部引っかかるような

なら LIKE 'チャーハン%' でいいじゃん
223NAME IS NULL:2011/03/29(火) 20:59:36.31 ID:???
>>219-222
うん。承知で聞いてみました。
もらったデータの分割が不十分だったので。。。
凄いテクニックを教えてもらえるかもと甘えてしまいました。

素直にデータの見直しをしてみます。
数万行あるけどwww
224NAME IS NULL:2011/03/29(火) 21:16:05.42 ID:???
WHERE menu REGEXP 'チャーハン[0-9]+.*'
225NAME IS NULL:2011/03/29(火) 21:41:58.38 ID:???
結局、質問者がどんな条件でどんな行をSELECTしたかったのかすら分からなかったというオチ
226NAME IS NULL:2011/03/29(火) 22:13:26.52 ID:???
OS名を見ろ。釣りだ。
227NAME IS NULL:2011/03/29(火) 22:30:27.37 ID:???
>>226
釣りじゃないです。

達人がみてそうなので聞くけど、
while ($rows = mysql_fetch_array($result, MYSQL_NUM))
などで、その時に参照している行と、1行先の行を比較する時は
どうすればいいですか?

お願いします。
228NAME IS NULL:2011/03/29(火) 22:44:30.41 ID:???
一行先と比較ではなく、
一行前と比較すればよい
229NAME IS NULL:2011/03/29(火) 22:53:18.56 ID:???
>>228
ありがとう。
脳味噌を塩水で洗ってくる。
230NAME IS NULL:2011/03/29(火) 23:09:04.53 ID:???
>>226
>OS名を見ろ。釣りだ。
あえてスルーしてたんだけど、改めて見るとおもろいわ
【OS名】Linax
231NAME IS NULL:2011/03/29(火) 23:13:29.09 ID:???
>>230
ごめん。スルーしてよw
ただのtypoというか脳がカビてた。。。

なんなら"TOTO"でもスルーしてw
232NAME IS NULL:2011/03/30(水) 00:08:03.09 ID:???
+id+-pra-+--sab--+
| 1 | 牛丼 | ネギ濁 |
| 2 | 牛丼 | ネギ濁 |
| 2 | 牛丼 | + 生卵 |
| 3 | 牛丼 | 生 卵 |

id2を一行として出力するのはどうすれば良いですか?
233232:2011/03/30(水) 00:11:35.65 ID:???
出力というか、同一データとして処理するにはという事です。

| 2 | 牛丼 | ネギ濁 + 生卵 |

こんな感じで。
234NAME IS NULL:2011/03/30(水) 00:23:29.03 ID:???
そんなのはSQLの仕事じゃない
ストアドでも書いとけ
235NAME IS NULL:2011/03/30(水) 00:48:53.51 ID:???
sab ww
236NAME IS NULL:2011/03/30(水) 11:40:09.35 ID:???
>>233
GROUP_CONCAT関数を使え

>>234
バーカ
237NAME IS NULL:2011/03/30(水) 21:28:58.35 ID:???
sabの型ををvarchar(10)ぐらいにして”ネギ濁 + 生卵”という文字列をデータにする
238NAME IS NULL:2011/03/30(水) 21:55:30.96 ID:7xrkyPyI
すみません、意味の分からない質問かも知れないですが、
mysql用のポート(3306)があると思うんですが、これは別のサーバーから別のサーバーの中の
mysqlを操作する時に必要なんでしょうか?
同じサーバのwebアプリからのみ使うときは開放しなくてもいいものですか?
239NAME IS NULL:2011/03/30(水) 22:00:57.80 ID:???
>>238
127.0.0.1:3306
240NAME IS NULL:2011/03/30(水) 23:29:31.63 ID:7xrkyPyI
>>239
ありがとうございます
知識不足でよくわからなかったので、その127.0.0.1:3306をキーにググってみたら
接続対象ホストとしてlocalhostを127.0.0.1:3306に置き換えるというのがありました
localhostでも127.0.0.1:3306でもどちらでも大丈夫ってことでしょうか?

ためしに、今mysqlで動いてるサービスで接続ホストに127.0.0.1を指定して、iptablesで
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j DROP
を設定したんですが、無事にsql実行できています
ポートが閉じてるから動かなくなるのかなと思ったのですが…

考えていること、まったく勘違いしてるんでしょうか?
また、最初からiptablesには
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
なんてなかったですがmysql動いていました
241NAME IS NULL:2011/03/31(木) 00:53:12.66 ID:???
>>240
RH-Firewall-1-INPUT というチェインはlocalhostからlocalhostへのアクセスに関係してるのか?
242NAME IS NULL:2011/03/31(木) 01:19:12.67 ID:???

基本的にデータベースへの操作はコネクションを確立し、通信で接続して操作をおこなうようにできています。
なのでポート:3306は開放しなければいけません。
ただ、mysql側の通信を受け付けるIPアドレスの設定をlocalhost(127.0.0.1)に設定し、それ以外のIPアドレスからの接続は受け付けないようにしなさいという意味です



で、iptableの解説

”-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j DROP”
  ↑これは確かに3306番ポートは閉じているのですが

さらに同じ設定ファイルの先頭のほうに次のような設定は書かれていませんか?

”-A RH-Firewall-1-INPUT -i lo -j ACCEPT”
  ↑これは”-i lo”つまりlocalhost(127.0.0.1)からの通信はすべてACCEPTにしますという設定です

なのでMysqlがインストールされているホストからはSQLが問題なく実行されているのです。

わかる?
243238:2011/03/31(木) 02:05:05.72 ID:???
>>241
うう、iptablesの知識不足でわかりません。お恥ずかしいです。
勉強し直します、ありがとうございました

>>242
なるほど!凄くわかりやすいです
たしかに「-A RH-Firewall-1-INPUT -i lo -j ACCEPT」と書いてありました、わかりました

簡単なmysqlの使い方みたいな本見て触ってただけなので、
ポートとかiptablesとの関係なんてのってないし考えたこともなかったです
聞いて良かったです、ありがとうございました。勉強します
244NAME IS NULL:2011/03/31(木) 04:12:20.41 ID:???
socket使用でもいるんだっけ?

skip-networking!!!!!!
245NAME IS NULL:2011/03/31(木) 11:28:57.23 ID:???
>>242
ずいぶん回りくどい説明だな
246NAME IS NULL:2011/03/31(木) 12:31:13.88 ID:DLbNnEWK
ユーザーテーブルにbirthdayカラムが格納されており、
このデータを元に毎日どのユーザーが誕生日なのかを検索したいと考えています。

具体的には以下のような感じです。
SELECT * FROM users WHERE date_format(birthday, '%m%d') = [今日の日付];

毎日実行することになるためbirthdayカラムにインデックスを貼りたいのですが、
上のように、birthdayを直接使うのではなく関数の入力として使う場合でもインデックスは有効になりますか?
もしならない場合は解決法などあるのでしょうか?
よろしくお願い致します。
247NAME IS NULL:2011/03/31(木) 13:44:46.58 ID:???
>>246
> 関数の入力として使う場合でもインデックスは有効になりますか?

ならない。

> もしならない場合は解決法などあるのでしょうか?

あらかじめbirthdayから年を抜いて文字にした列を作っておく。

alter table users add column (birth_mmdd varchar(5));
create index idx_users_birth_mmdd on users (birth_mmdd);
update users set birth_mmdd = date_format(birthday, '%m/%d');
select * from users where birth_mmdd = [今日の日付];
248246:2011/03/31(木) 15:01:42.69 ID:DLbNnEWK
>>247
ありがとうございます!
なるほど、カラムを増やさないといけないのですね。。
データ量が増えるのが少し怖いですがやってみます。ありがとうございました。
249NAME IS NULL:2011/03/31(木) 16:59:20.07 ID:???
>>246
MySQLには詳しくないが[今日の日付]の型をbirthdayに合わせればいいのではないのか?
SELECT * FROM users WHERE birthday = 日付型に変換([今日の日付]);
で、birthdayにインデックスを貼る。
250NAME IS NULL:2011/03/31(木) 17:09:20.51 ID:???
いや、毎年のことだからね
DBに1984/3/31って入ってたら3/31部分で
マッチングかけないといけないから
フィールド側に演算が必要になる
251NAME IS NULL:2011/03/31(木) 19:42:20.88 ID:???
>>246

SELECT * FROM users WHERE birthday LIKE '%/3/31';
252NAME IS NULL:2011/03/31(木) 20:32:01.95 ID:???
>>251
インデックスはどこいったんだよ
253NAME IS NULL:2011/03/31(木) 20:34:23.34 ID:???
>>252
必要ない。
データベース検索速度なめすぎ。
254NAME IS NULL:2011/03/31(木) 22:52:22.61 ID:???
1万人ぐらいならインデックスなくても平気だろうね。
ただ高性能サーバを使っても
インデックスありの性能>インデックスなしの性能
が変わるわけではなく東京電力にやさしくない
255NAME IS NULL:2011/03/31(木) 23:04:21.89 ID:???
件数もハードスペックもわからない状態でパフォーマンスについて言い切るアホを見た。
256NAME IS NULL:2011/03/31(木) 23:06:39.35 ID:???
>>253
俺もレコード数30万件程度のテーブルにLIKE検索かけてるけど4、5秒程度で終わる。
しかも今日の誕生日の人検索ってことは1日1回だけの検索ですむんでしょ?
それだけのためにindexは付ける必要はないと思います
257NAME IS NULL:2011/04/01(金) 00:50:01.16 ID:???
>>256
俺は同じ処理に、PHPがメモリ不足になるんだが・・・
さくらの専鯖だけど、PHPの書き方に問題あるのかな
258NAME IS NULL:2011/04/01(金) 01:03:38.97 ID:???
>>257
検索結果が多すぎるんだよ
LIMIT 0 , 100 で検索結果を小分けにしろ
259NAME IS NULL:2011/04/01(金) 01:14:07.95 ID:???
全部のフィールドにインデックスつければどんな検索でも快速になりますか?
260NAME IS NULL:2011/04/01(金) 01:16:00.87 ID:???
たった30万件で4,5秒って恐ろしいぐらいに遅いな
俺は1000万件以内で1秒以上は全てバグ扱いしてるわ
261NAME IS NULL:2011/04/01(金) 01:22:01.95 ID:???
>>260
1000万件でインデックスもつけずに常に1秒未満って、よっぽど素晴らしいマシンをお持ちなんですね。
羨ましい。
262NAME IS NULL:2011/04/01(金) 02:25:44.56 ID:???
1000万件のレコードだけどフィールドはidしかないからね
263NAME IS NULL:2011/04/01(金) 02:59:30.03 ID:???
素人設計の神髄を見た
264NAME IS NULL:2011/04/01(金) 05:12:25.09 ID:???
>>262
わろた
265NAME IS NULL:2011/04/01(金) 18:07:23.68 ID:???
僕の人生をMySQLに全て格納したい
僕が死んでも僕が成し遂げた偉業を後世に残したい
akiyan
266NAME IS NULL:2011/04/01(金) 18:29:15.92 ID:???
じゃぁ俺はPostgresに格納することにする
267NAME IS NULL:2011/04/01(金) 19:01:05.71 ID:???
>>265
リソースの無駄
268NAME IS NULL:2011/04/01(金) 20:16:53.05 ID:???
>>265
それならスキーマレスで柔軟なMongoDBを進める
269NAME IS NULL:2011/04/01(金) 20:18:46.55 ID:???
>>265
エクセルサイズの人生なのにもかかわらずか
270NAME IS NULL:2011/04/01(金) 22:04:36.50 ID:5mLjWvkY
種別dateをmdb2で
`birthday` BETWEEN '1900-01-01' and '2000-03-01'
のようにやると範囲指定して抜き出せるんですが、
これを頭の四桁は問わず、後ろの2桁、2桁がこの範囲内の場合、という抜き出し方はできませんでしょうか?
具体的には星座で絞込をしたいので、
01-20 と 02-18の間、というようなのだけを出したいです。
271NAME IS NULL:2011/04/01(金) 22:10:39.34 ID:???
`birthday` BETWEEN '2011-02-15' and '2011-03-15' じゃだめなの?
272NAME IS NULL:2011/04/01(金) 22:13:49.58 ID:???
>>271
それじゃ赤ちゃんしか引っかからないじゃん
273270:2011/04/01(金) 23:09:06.89 ID:5mLjWvkY
自己解決しました

最小の生年と最大の生年を取得して、
その間をforでまわして
$horobetween = $horobetween." or `birthday` BETWEEN '$i-$date' and '$i-$date'";
($iが最小の生年から最大の生年まで増えていく)
みたいにやってwhereを複数にすることにしました
274NAME IS NULL:2011/04/02(土) 00:57:40.91 ID:???
Drizzle 1.0 と MySQL 5.5 はどっちが強い?
275NAME IS NULL:2011/04/02(土) 01:01:50.93 ID:???
プライマリーキーをIDに設定して
EXPLAIN SELECT ID FROM table WHERE data IS NOT NULL
とやったらTypeがALLになったんですが、このまま使っても問題ないでしょうか。
もっといい方法あったら教えてほしいです。
276NAME IS NULL:2011/04/02(土) 01:55:13.03 ID:???
一人の初心者(自力で学習する気力を持たないタイプ)が、とことん楽して解決しようとする場に・・・
277NAME IS NULL:2011/04/02(土) 01:57:38.03 ID:???
>>276
いまさら
新参かい?
278NAME IS NULL:2011/04/02(土) 03:13:46.68 ID:???
>>275自己解決しました。
複合インデックス貼ったらインデックス使われました。お目汚しすみません。
279NAME IS NULL:2011/04/02(土) 15:31:01.42 ID:???
>>276
なんでIT系の古い奴ってこういう考え方してるやつが多いんだろ
だから優秀な人間がみなIT系から逃げていく。結局土方レベルの人間しか育たない。
基本的な技術はストレートに答えを教えてやるほうが先につながっていくのにな
280NAME IS NULL:2011/04/02(土) 16:41:26.98 ID:???
>>279
なんで今時の若造ってこういう考え方してるやつが多いんだろ
自分で考えて解決しようという気構えが見られない。そんな奴は結局使い物にならない。
基本的な技術は自分で本でも読めばマスターできる。その程度のことをいちいち人に聞いてるようでは先はない。
281NAME IS NULL:2011/04/02(土) 17:22:25.44 ID:???
>>280
底辺のおまえがゆっても説得力がない
282NAME IS NULL:2011/04/02(土) 17:48:34.31 ID:???
>>281
×ゆっても
○いっても(言っても)

日本語もまともに使えないようなガチゆとりはこれだから
283NAME IS NULL:2011/04/02(土) 20:04:00.30 ID:???
何れにしても、脊髄反射で >>276みたいに 自分で調べろ が頭をよぎる奴は
気を付けた方がよい。 明らかに2ちゃん脳である。 特にIT系板におおい2ちゃん脳である。
284NAME IS NULL:2011/04/02(土) 20:41:37.83 ID:???
俺も>>279側の人間だな
質よりも数。数が多ければ質の高い奴もいつのまにか現れる。いまのIT業界の産業構造は最悪だ
>>280のように技術の伝達もしないまま足の引っ張り合いばかりしてるから新しい技術や発想も生まれてこない。
いい発想やアイデア持ってる奴はたくさんいるのに、みんな離れてく。かなしいことですね
285NAME IS NULL:2011/04/02(土) 21:03:57.14 ID:???
>>283
かん派とあかん派じゃね?
286NAME IS NULL:2011/04/02(土) 21:35:39.85 ID:???
>>276
そういって若い奴が育ってこなけりゃ自分は新しい技術を勉強しなくても、でかい面してられるっていう作戦だろ?
うん、よくある、よくある。
287NAME IS NULL:2011/04/03(日) 00:05:48.06 ID:???
でもここ会社じゃないし。若い奴を育てる必要ないし。
若い奴が育つと俺の仕事なくなるし。

ということ
288NAME IS NULL:2011/04/03(日) 00:08:57.36 ID:???
>>284
いや、どの業界に行ったって一緒だからw
どんな質問にも簡単に答えてもらえ、自分で物事を考える必要がないような
くだらない業界に行きたいのならご勝手に。
IT業界の行く末を案じていただかなくても結構です。
289NAME IS NULL:2011/04/03(日) 00:18:32.05 ID:???
>>288
そうは言ってもヒントぐらいは出すよ。
じゃないと後継が育たないじゃん。
290NAME IS NULL:2011/04/03(日) 01:11:37.55 ID:???
ここは会社じゃないので後継を育てる必要がない
むしろ育たないほうがいい
291NAME IS NULL:2011/04/03(日) 01:12:40.78 ID:???
どうして?そうやってMySQLが発展していったり、使う人が増えればいいじゃん
292NAME IS NULL:2011/04/03(日) 02:39:26.91 ID:???
>>287-288
フリーソフトウェアやGPLについて、社会的貢献という視点でどう思われますか?
293NAME IS NULL:2011/04/03(日) 03:59:42.14 ID:kwd0MNCA
質問させてください。
http://q.hatena.ne.jp/1172390238
ここの3レス目に

どうしてもLIKEや!=でしか現せないような式の場合のみLIKEや!=を使うようにすればいいかと思います

とありますが、 != って多用するものではないのでしょうか?
!= をindexの使える他の形のクエリに書き換えるとしたらどのような書き方になるのでしょうか。

ご教示いただけると幸いです
294NAME IS NULL:2011/04/03(日) 06:34:20.18 ID:???
>>293
!= の代替は X<n AND n<X 
ちなみにこれを括弧で囲みたくなると思うが、括弧の数も可能な限り減らすこと。
295NAME IS NULL:2011/04/03(日) 07:00:26.68 ID:???
>>291-292
2chのスレごときで社会的貢献とか語るのはおこがましいということに気づかないのか?
お前らは後継者である未来ある若者の代表じゃなく、ただのクズの集まりだと自覚せよ。
296NAME IS NULL:2011/04/03(日) 07:36:39.53 ID:???
>>295 2chのスレごときで…自覚せよ。
297NAME IS NULL:2011/04/03(日) 07:53:10.14 ID:???
>>296 2chでシゴいて…せよ。
298292:2011/04/03(日) 10:39:38.15 ID:???
>>295
そんな質問してないけどなぁ。 フリーソフトウェアやGPLについてどう思うか
質問してるんだが答えられないのかい?
299NAME IS NULL:2011/04/03(日) 10:46:19.63 ID:???
そうやって脈絡のない質問するからおまえは空気が読めないと周りから思われてるんだよw
300NAME IS NULL:2011/04/03(日) 10:54:40.71 ID:???
>>299=レス奉行
301NAME IS NULL:2011/04/03(日) 13:19:08.69 ID:???
>>299
あんた見聞狭そうだねーw 会社で虐げられてるんだろうけど掲示板だけじゃなく会社でも強く生きろよw
302NAME IS NULL:2011/04/03(日) 14:18:33.81 ID:???
春休みか・・・
303NAME IS NULL:2011/04/03(日) 15:43:06.44 ID:???
大学受験英語のスレに、「This is a book.のisって何ですか?」とか質問してこいよ、ゴミクズ。
304akiyan:2011/04/03(日) 19:17:04.88 ID:???
喧嘩はよくないと思います
305NAME IS NULL:2011/04/03(日) 19:22:01.13 ID:???
知恵袋、okweb、2ch、どれも同じくらい低レベル。
まだ2chには知識ある人がスレにいるからアホな質問には厳しい。
306NAME IS NULL:2011/04/03(日) 19:42:48.81 ID:???
>>303
isも知らないんだ・・・かわいそうに。
自分で質問する勇気が無くて他人任せですか?
だからゆとり世代とか馬鹿にされるんですよ。
307NAME IS NULL:2011/04/03(日) 19:44:07.08 ID:???
質問が低レベル杉だということを忘れてないか?
誰しも迷う問題であったり、間違えやすい事だったりすれば、初歩的な質問でも人から教わってもいいと思う。
だが、ここ数日沸いて出た質問者は、ただ単にラクしたいだけとしか思えないほど低レベルだ。

空気読めずに、まだ質問してやがるしな
308akiyan:2011/04/03(日) 20:07:32.25 ID:???
カリカリしなさんな
309NAME IS NULL:2011/04/03(日) 21:18:46.95 ID:???
>>303
それは哲学入った質問だろハゲ
310293:2011/04/04(月) 02:22:03.10 ID:ORXRnSlM
>>294
ありがとうございます。けっこう面倒なことになりそうなんですね・・
自分が今までやってきた中では!= の代替として X<n AND n<X を使うようなのって
見たことなかったのですが、結構これって常識なのでしょうか?
311NAME IS NULL:2011/04/04(月) 04:25:14.34 ID:???
↑ほんとコイツ空気読めねえな・・・

質問内容はバカだし
312NAME IS NULL:2011/04/04(月) 07:00:02.71 ID:???
じゃぁほっとけばいいだろ。
そうやって初心者をいじめて楽しいのか?
ちょっと知識が着いたらすぐに図に乗りやがって。最近の若者はこれだから全く。
313NAME IS NULL:2011/04/04(月) 08:51:03.66 ID:???
>294 名前:NAME IS NULL[sage] 投稿日:2011/04/03(日) 06:34:20.18 ID:???
>>293
>!= の代替は X<n AND n<X 
>ちなみにこれを括弧で囲みたくなると思うが、括弧の数も可能な限り減らすこと。

だれも突っ込まないのか?
314NAME IS NULL:2011/04/04(月) 10:24:23.60 ID:???
5.5.8で、selectの結果をOUTFILE文でファイル出力してます。

そのときの文字コードを、SJIS,UTF-8と任意に指定したいのですが、
set names xxxを実行しても画面出力は変わりますが、
ファイル出力はデフォルトの文字コードでしか出力されません。

デフォルトは変更できませんので、iniファイルを変更することなく、
ファイル出力をコマンドラインから変更したいのですが、
どのように指定すればいいのでしょうか?
315NAME IS NULL:2011/04/04(月) 12:18:54.59 ID:MneC9twQ
データを全件取得場合は以下のsqlをどのように書き換えればよいでしょうか

SELECT * FROM `{TABLE_NAME}` LIMIT 0, 30
316NAME IS NULL:2011/04/04(月) 12:22:26.54 ID:???
解決しました
LIMITから後を削除したら取得できました
317NAME IS NULL:2011/04/04(月) 12:29:14.60 ID:???
PC知識が付いてくると、自分は偉いんだ と勘違いし始める人間は多い。
自分はそうならないようにしたい。
プロ野球選手も飲み屋に行けばただのおっさんなのですよ。
318NAME IS NULL:2011/04/04(月) 13:14:09.02 ID:???
>>317
自己弁護するな アホのくせに

こうも低レベル過ぎる質問をよくも立て続けに出せるもんだ・・・

自分が偉いとかいうハナシじゃねえよ
オマエがアホ過ぎるだけだ
319NAME IS NULL:2011/04/04(月) 14:12:37.28 ID:???
>>317
アホを育てる意義を感じてる奴もいるようだ
そんなアホ担当が答えてくれるさ
320NAME IS NULL:2011/04/04(月) 14:25:17.31 ID:???
>>318
掲示板に よくこんなアホな文面書き込めるよなぁ。 コツ教えてくれよ
321NAME IS NULL:2011/04/04(月) 14:52:03.26 ID:???
>>302以下無限ループ
322NAME IS NULL:2011/04/04(月) 14:56:56.06 ID:???
どうあっても他人に答えを求める低レベル脳君が、ついに暴走し始めたようだな。

さらにまた「教えてくれ」ときた。
323NAME IS NULL:2011/04/04(月) 15:23:55.86 ID:???
だからな、「教えて」って言う奴には教えればいいし、
「教えたくない」って思えば教えなくて良いんだよ。
こんなの誰だって出来るだろ。
324NAME IS NULL:2011/04/04(月) 16:05:18.35 ID:???
さあ、アホ担当の方々
そろそろ出てきて、低レベル脳君にいろいろ教えてあげて下さい

今回はアホな文面を書くコツを教えてほしいそうです
325NAME IS NULL:2011/04/04(月) 16:57:01.60 ID:???
質問書きにくいからお願いだから荒らさないでください
326NAME IS NULL:2011/04/04(月) 17:18:03.00 ID:???
傍観するつもりでいたけどさすがに最近質問連発してる>>325もどうかと思う
327NAME IS NULL:2011/04/04(月) 17:39:50.10 ID:???
空気読めない彼は、さらに質問する気マンマンだしな・・・
質問内容はカスそのものだし困ったもんだ・・・

>>324
>今回はアホな文面を書くコツを教えてほしいそうです
低レベル脳君の質問文章そのものがアホなので、自身の文章が一番参考になるってオチだな
328NAME IS NULL:2011/04/04(月) 21:35:55.96 ID:???
sqlのsとpとlって、それぞれどういう意味ですか?

優しく教えてくれる人、なんて答えてくださる?
329NAME IS NULL:2011/04/04(月) 21:41:27.93 ID:???
>>326
本当に傍観してる人はこんなレスしてない
330NAME IS NULL:2011/04/04(月) 21:57:58.95 ID:???
>>328
ぐぐったら3秒で判ったぞ。
331NAME IS NULL:2011/04/04(月) 21:58:53.99 ID:???
>>328
sqlにpは含まれていません
332NAME IS NULL:2011/04/04(月) 23:33:11.25 ID:???
supper query language
333NAME IS NULL:2011/04/04(月) 23:35:41.41 ID:???
だからpは含まれてないってば。
334NAME IS NULL:2011/04/04(月) 23:38:03.20 ID:???
データベース言語国際標準としてのSQLは何かの略語ではない[1]。

^ SQLは、Structured Query Languageの略と思っている人やそう紹介しているサイトも少なくないが、多くの場合、これは正しくない。
IBM社がかつて提供していたSQL/DSなどのRDBMSのSQLなら、これで正解である。一方、標準SQLは、IBM社のRDBMSのDB2の仕様を多く取り入れており、影響を受けていることは疑いようもないが、「SQLは、何かの略語ではない」としている。
335NAME IS NULL:2011/04/05(火) 00:14:51.97 ID:???
バカだなあ、釣りの質問にまともに答えちゃって
よく読めってのpq

あんたら、おちょくられてるのに気がつかないの?
336NAME IS NULL:2011/04/05(火) 11:08:38.64 ID:???
>>335
あんたこそ、人を疑うのは良くないことだよ。
このスレで釣りの質問をする人なんているはずがないじゃないか。
337NAME IS NULL:2011/04/05(火) 14:35:07.66 ID:???
低レベル過ぎる質問の数々が、釣りそのものなんだけどね テヘッ
338NAME IS NULL:2011/04/05(火) 15:05:32.97 ID:???
むしろ、高レベルの質問が未だかってあったのだろうか
339NAME IS NULL:2011/04/05(火) 17:30:48.23 ID:???
じゃぁ試しに何か高レベルな質問してみてよ
340NAME IS NULL:2011/04/05(火) 19:30:09.34 ID:???
いいのか? 死んでもしらんぞ?
341NAME IS NULL:2011/04/05(火) 19:50:48.59 ID:???
何このくだらない会話
342NAME IS NULL:2011/04/05(火) 19:56:30.67 ID:???
イヤなら見なきゃ良いだけのもんだろよ
理解しろっての
343NAME IS NULL:2011/04/05(火) 20:02:51.94 ID:???
何を理解すればいいのか理解できないのですが
344NAME IS NULL:2011/04/05(火) 22:40:34.13 ID:???
教えたくなければ教えなければいいだけ!
とか、当たり前の事をゴチャゴチャ言いたがる奴だから察してあげて
345NAME IS NULL:2011/04/05(火) 23:39:04.82 ID:???
言いたがるだけなら放っておけばいいが言ってしまったら放っておけない性分です
346NAME IS NULL:2011/04/07(木) 12:04:10.79 ID:???
役に立たないレスばっかり
347NAME IS NULL:2011/04/07(木) 12:38:45.98 ID:???
お前モナー
348NAME IS NULL:2011/04/07(木) 12:53:56.72 ID:???
MLに
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/15553
こんなゴミ流れてると思ったらスレも酷くてワロタ。
こいつも釣りなのか?
349NAME IS NULL:2011/04/07(木) 15:18:33.55 ID:???
どうりでこのスレにキチガイが多いわけだ
350NAME IS NULL:2011/04/07(木) 17:26:01.45 ID:???
お前らモナー
351NAME IS NULL:2011/04/07(木) 18:56:16.12 ID:???
おっさんって何で場違いな所で身の上を話したがるんだろうな
352NAME IS NULL:2011/04/07(木) 19:00:37.03 ID:???
おっさんだから。先が無いから。昔の栄光だけが心の支えだから。
353NAME IS NULL:2011/04/07(木) 19:59:19.58 ID:???
正直どんなに困っていようと軽く困っていようと、質問内容がきちんとしてればそれでいいんだがなぁ。
354NAME IS NULL:2011/04/07(木) 20:08:13.44 ID:???
つべこべ言わずに黙って回答すりゃいいんだよクズが
355NAME IS NULL:2011/04/07(木) 20:27:09.49 ID:???
あのキチガイと同系列の発言キターw
ttps://lists.ubuntu.com/archives/ubuntu-jp/2009-December/002425.html
類友?ご本人?w
356NAME IS NULL:2011/04/07(木) 20:33:27.48 ID:???
っていうか、適当に持ち上げて旨くその回答者を乗せて使うってのも知恵だよ。
旨く乗せれば無駄にプライド高いから頑張ってくれるだろ?
そういうのをうまく使えないのは優秀ではないよね。
357NAME IS NULL:2011/04/07(木) 21:42:09.52 ID:???
>>351
逆に言えば若年は経験も浅く、結果がまだ出ていなかったりで 話すほどのものがたいしてない
358NAME IS NULL:2011/04/07(木) 21:52:54.63 ID:???
荒らしてるのは質問してる人でも回答してる人でもないんだな
プライドだけが高い人が上から目線でスレを汚しているだけ
高レベルな会話がしたいのならレベルの高い人が集まる場所に行けばいいよ
359NAME IS NULL:2011/04/07(木) 22:05:00.30 ID:???
ナントカとハサミは使いようって奴だよ。
まぁ本当にプライドだけで使えないのも居るけど、ナントカからでも有用な物を搾り出すのも技術。
このスレがどうかってのはまた別だけど、調子乗せてアレコレ動くような書き方ってのがあるだろ?w
で、レベルが低いっていうなら、高い場所を選ぶってこともまた頭使うって事だよな。
間違っても「黙って答えろ」って言って機嫌よく乗ってくる奴は中々いないぜw
360 忍法帖【Lv=1,xxxP】 (´・ω・)ス:2011/04/07(木) 22:30:52.82 ID:???
 
ここで文句を書き並べてる奴ら、

 全員、Suiton したい

と、思うのは私だけでしょうか?
361NAME IS NULL:2011/04/07(木) 22:55:12.70 ID:???
お前も文句書いてる件
362NAME IS NULL:2011/04/08(金) 03:38:26.98 ID:???
俺は、おめぇらみたいなパソコンオタクじゃねぇ。
363NAME IS NULL:2011/04/08(金) 05:36:04.42 ID:???
>>362
普通の奴が言ってもだめだよー。キチガイジジイがテメェ棚に上げて見下す視線が笑いどころなんだからw
流石に「お前みたいな頭の悪いキチガイじゃねぇ!」って言い返したくなるわなw
詳しくなくても私信をMLに投げるか?もう、常識とかってレベルでおかしい。
ttp://twitter.com/fcr1228
あわてて名前だけ変えてもねぇ?w自分のおつむ棚に上げて酷ぇこといってるよw
まともに呟けもしないのにWebサーバにデータベースねぇ?w
364NAME IS NULL:2011/04/08(金) 10:44:35.48 ID:???
こういうのを見ると、MLとかより2chの方がいいと思える。
365NAME IS NULL:2011/04/08(金) 11:42:32.72 ID:???
大差はないだろ?あっちは「荒らされる」こっちは「荒れる」
でも、こういう荒れ方ってある意味平和だと思うよ。
誰も本当は困ってないから、質問であふれないんだからさ。
見た感じはよくないけどなw
366NAME IS NULL:2011/04/08(金) 14:19:50.91 ID:???
見た感じが良くないとか決め付けてんじゃねよw
そういうお前の書き込みが荒らしだと自覚しろ
367NAME IS NULL:2011/04/08(金) 14:34:22.62 ID:???
>>365
個人的には「荒らされる」は不健全で「荒れる」は健全だと思ってる。
まあどうでもいいけど
368NAME IS NULL:2011/04/08(金) 14:50:20.80 ID:???
>>366
お前は何を言っているんだ?
369NAME IS NULL:2011/04/08(金) 14:55:51.82 ID:???
自分が知ってる事に対して質問する人を荒らし扱いするキチガイが1匹
370NAME IS NULL:2011/04/08(金) 15:06:31.82 ID:???
ガキの相手は疲れるぜwハ〜
371NAME IS NULL:2011/04/08(金) 15:07:30.50 ID:???
>>368
何を言ってもお前には無駄らしいな
372NAME IS NULL:2011/04/08(金) 16:29:58.28 ID:dnOIIUgb
インデックスの種類のUNIQUEの使い道がいまいちよくわかりません。
UNIQUEじゃなく、PRIMARY_KEYではいけないのでしょうか?
既にPRIMARY_KEYが存在しているけど、別のフィールドでユニークを保証したい場合に使うのでしょうか?
373NAME IS NULL:2011/04/08(金) 16:38:26.26 ID:???
SQLに関する質問全般を荒らしと認定す
374NAME IS NULL:2011/04/08(金) 17:15:51.35 ID:???
>>372
> UNIQUEじゃなく、PRIMARY_KEYではいけないのでしょうか?

PRIMARYはUNIQUEかつNOT NULL。
NOT NULLであることが分かっているならPRIMARYにしてもよい。

> 既にPRIMARY_KEYが存在しているけど、別のフィールドで
> ユニークを保証したい場合に使うのでしょうか?

既にPRIMARYがあるテーブルに追加でUNIQUEを作るケースは
テーブルをきちんと正規化してればあまり発生しない、はず
375NAME IS NULL:2011/04/08(金) 17:26:58.15 ID:???
>>373
頼むからIPかコテハン付けて
あぼんしとくから
376NAME IS NULL:2011/04/08(金) 17:32:16.68 ID:???
>>375
誰がIP晒すかよw
テメェこそID出しやがれ
377NAME IS NULL:2011/04/08(金) 17:34:11.54 ID:???
オートインクリメントすると思うけどそれだとユニークじゃなくてプライマリキーじゃないとダメジャン
378372:2011/04/08(金) 17:43:57.27 ID:dnOIIUgb
ほとんどがPRIMARY_KEYで済むので、UNIQUEっていつ使うのだろうと思っておりました。
NULLを格納したい場合に使うのですね。
と、同じ会員IDを登録できない仕様のものがあるとして、通し番号はPRIMARY_KEY+AutoIncrement、つけるのなら会員IDはUNIQUEという認識でよろしいでしょうか?
379NAME IS NULL:2011/04/08(金) 17:45:04.85 ID:???
>>375
俺のIP(アドレスな)は

127.0.0.1

だ。頼むからクラッキングとかしてこないでくれよ。
380NAME IS NULL:2011/04/08(金) 17:50:34.73 ID:???
>>379
ひゃっはー よし、いまそのアドレスでアクセスしたらネットワークドライブを見つけたぞ
FORMATされて泣きついてきてもオレはもう知らんからな
381NAME IS NULL:2011/04/08(金) 19:40:23.37 ID:???
>>378
よろしいです
382NAME IS NULL:2011/04/08(金) 22:45:17.14 ID:???
>>380
よろしいです
383NAME IS NULL:2011/04/09(土) 00:27:04.70 ID:???
Mac初心者質問スレッドで誘導頂きました。
質問させて下さい
power bookG4
OSバージョン10.5.8を使用しています。
macportsを利用してmysql5をインストールしました。
$ sudo port install mysql5-server

port version 1.9.2です。

インストール自体は何ら問題なく完了し
$ sudo -u _mysql mysql_install_db5

で初期化も問題なく完了しました。
mysqlの起動も問題なく完了しました。
$ sudo /opt/local/share/mysql5/mysql/mysql.server start
Starting MySQL
SUCCESS!

無事起動したので
$ mysql5 -u root
を実行したところ
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
アクセスがはじかれてしまいます。
同じく
$ /opt/local/lib/mysql5/bin/mysqladmin -u root password 'hogehoge'
$ /opt/local/lib/mysql5/bin/mysqladmin -u root -h MacPPC.local password 'hogehoge'
を実行しても同じエラーではじかれてしまいます 。
おそらくmysql.userを編集しないとどうしようもない状況なのでしょうが
アクセスがはじかれてしまいどうしようもありません。
それともDHCP環境下で使用しているのが問題なのでしょうか。
よろしくお願い致します。
384NAME IS NULL:2011/04/09(土) 00:43:01.25 ID:???
>>383
$mysql5 -u root -p
でもだめ?
385NAME IS NULL:2011/04/09(土) 02:09:15.54 ID:???
>>384さん
だめでした。
$mysql5 -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
だそうです。
そもそもrootパスワードを設定する、
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'
/opt/local/lib/mysql5/bin/mysqladmin -u root -h MacPPC.local password 'new-password'
を実行すると
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
でアクセスがはじかれてしまう状態なので -pオプションを付けても
現状ではpassword自体がない状態にあると思います。

もうportsでのinstallはあきらめなくてはならないかもしれないので、
MacOSX PPC用mysqlバイナリの配布先ご存じの方はいらっしゃいませんか?
私の探し方がへたくそなせいで x86, 64-bit しか見つけることができませでした。
よろしくお願い致します。
386NAME IS NULL:2011/04/09(土) 07:41:24.68 ID:???
>>385
自分もmacportsでいれたけど問題ないな。
たしか、起動オプションでパスワード認証をスキップするオプションがあったはず。
387NAME IS NULL:2011/04/09(土) 07:45:11.90 ID:???
tp://nippondanji.blogspot.com/2011/04/mysql-dba273.html?m=1

rootユーザーのパスワードを忘れたときの回復手順
--skip-grant-tablesオプションを使う。このオプションをつけてmysqldを起動するとパスワードなしでログインできるようになるので、

とかやってみたら?
388NAME IS NULL:2011/04/09(土) 10:58:37.64 ID:???
>>385
いや、既にパスワードが設定されてるんだろ?
インストール時か直後に何か設定した記憶は無いの?
mysqladmin にしたって現在設定されているパスワードを入力しなきゃ
新しいパスワードには変更できないんだから Access denied になって当然
389NAME IS NULL:2011/04/09(土) 22:27:38.32 ID:???
>>387さん
ご教示いただきましたとおり、実行してみました。
$ sudo /opt/local/share/mysql5/mysql/mysql.server start --skip-grant-tables
を実行したところパスワードなしで無事アクセスできました
ありがとうございました。

>>388さん
私もご指摘の通りと思い、何度か
$ sudo port unistall mysql5-sesrver
$ sudo port unistall mysql5
を実行して
$ sudo port install mysql5-server
を再実行して、クリーンインストールしているつもりでした。
ちなみに、現状
mysql > use mysql;
mysql> select * from user;
Empty set (0.00 sec)
となっております。
何かコピペしたときにデータが入っており、そのデータが引き継がれてしまっているのかなと思いきや、ユーザーが一つも入っていなかったという落ちでした

みなさま、ご教示ありがとうございました。
390NAME IS NULL:2011/04/10(日) 01:07:59.08 ID:???
インストールの仕方によっては初期にuserが全く登録されないなんてことがあるのか。
聞いたこと無いな。
391NAME IS NULL:2011/04/10(日) 16:28:04.62 ID:???
>>390さん

最初のインストール時に別サーバからmysqldumpではき出した
データを復元したのですが、データの復元を失敗してしまいました。
その際にmysql.userのデータを削除してしまったのかもしれません。
それで、mysql5の再インストールはしましたが
データdir削除はしていなかったため、既存の(つまりmysql.userのがemptyな)
データは残ったままでした。
再度インストールしてもそのデータが生きていたというのが真相だと思います。
なぜなら、試しに--skip-grant-tablesオプション起動の状態でmysql.userにrootをinsertし再度mysqlを削除し
インストールしたところ、データは残ったままだったからです。
お騒がせ致しました。
余談ではありますが、結局XAMPPのMySQLで権限設定を行いそれらをdumpして
リストアし使用できるようにしました。
理由としては
mysql.userの他に
mysql.db
mysql.host
の3テーブルの設定が必要になったからです。
392NAME IS NULL:2011/04/10(日) 16:46:52.72 ID:???
なるほどね
393293:2011/04/10(日) 20:42:45.47 ID:tzyV+5ID
>>310
>>313
どなたかレスいただけると幸いです。
394NAME IS NULL:2011/04/10(日) 23:27:46.18 ID:???
突っ込んだら負けに見えるが
X<n AND n<X ではなくて X<n OR n<X
395NAME IS NULL:2011/04/11(月) 09:29:50.55 ID:???
293はまじで分からなかったのか?釣りと信じたいw
396NAME IS NULL:2011/04/11(月) 09:51:10.83 ID:???
>>390
それが普通だと思ったが。
397NAME IS NULL:2011/04/11(月) 11:34:36.48 ID:???
rootもないんだっけ?
398NAME IS NULL:2011/04/11(月) 12:21:22.69 ID:qVCbLHf1
テーブルの照合順序(文字コード)を一括変換したいのですが、
ググってもひとつずつ変更する方法しかありません。
一括で変更できないのでしょうか?5.0.67を使っています。
399NAME IS NULL:2011/04/11(月) 12:47:43.16 ID:???
>>398
照合順序を変えた新しいテーブルを作ってデータを移すのが早いんじゃない?
400NAME IS NULL:2011/04/11(月) 12:49:11.45 ID:???
あ、ごめん。複数のテーブルを、って話か。
401NAME IS NULL:2011/04/11(月) 16:48:01.58 ID:NUeUTNL+
テーブル member

no 姓   名
1 田中  角栄
2 小泉  純一郎
3 阿部
4 福田
5 小泉  太郎

でselectで姓を検索するとき、レコードの「名」に値がある場合、
それを検索対象に入れての完全一致の結果を得たいのですが、
どう書けばいいんでしょうか?

「小泉」で検索、結果 0
「阿部」で検索、結果 1
「阿部」+「晋三」で検索、結果 1
「小泉」+「純一郎」で検索されたとき、結果 1

こんな感じで結果を得たいのです
わかりにくくてすみません…。
402NAME IS NULL:2011/04/11(月) 16:56:56.94 ID:???
姓・名・姓名で3回select回せば?
403NAME IS NULL:2011/04/11(月) 16:57:21.26 ID:???
インデックス使われないからあまりやりたくないけど
select * from member
where 姓 = '安部' and (名 is null or 名 = '晋三')
でいいんじゃないの
404NAME IS NULL:2011/04/11(月) 17:00:47.52 ID:???
> 「阿部」+「晋三」で検索、結果 1
晋三が見当たらないんですが
405NAME IS NULL:2011/04/11(月) 17:43:38.76 ID:???
だから、何?
406NAME IS NULL:2011/04/11(月) 17:51:03.16 ID:NUeUTNL+
>>403
それでいけそうです。ありがとうございます!
407NAME IS NULL:2011/04/11(月) 17:58:07.62 ID:???
where 性=’性条件’ AND 名=’名条件’

だけでいんじゃねーの。空白は空白
408NAME IS NULL:2011/04/11(月) 18:03:16.85 ID:???
性条件って何?童貞とか?ww
409NAME IS NULL:2011/04/11(月) 20:12:09.37 ID:???
>>408 私はあなたをSuitonしたいと本気で思いました。
410NAME IS NULL:2011/04/11(月) 20:38:40.60 ID:???
>>409 そうですか。それならば謝罪いたしましょう
411NAME IS NULL:2011/04/12(火) 15:34:34.53 ID:???
http://dev.mysql.com/doc/refman/5.1-olh/ja/create-index.html
>たとえば、接頭辞の最大長は MyISAM テーブルでは 1000 バイト、InnoDB テーブルでは 767 バイトです。

これはすなわちインデックスを張れる最大のサイズと解釈して良いのでしょうか?
URLを格納するVarcharフィールドにインデックスを張りたいのですがこの制約に引っかかってしまうので困っています
412NAME IS NULL:2011/04/12(火) 17:38:18.90 ID:???
MyISAMならFULLTEXTにすればいいんじゃないか
413NAME IS NULL:2011/04/12(火) 20:13:57.90 ID:???
>>411
そのページに書いてあるとおりにすればOK

> col_name(length) 構文を使用してインデックス接頭辞長を指定することによって、
> カラム値の先頭の部分のみを使用するインデックスを作成できます。

CREATE TABLE test (c1 VARCHAR(1000));
CREATE INDEX idx1 ON test (c1(200));
414NAME IS NULL:2011/04/12(火) 23:19:09.60 ID:???
>>413
ありがとうございます!
415NAME IS NULL:2011/04/13(水) 10:44:32.60 ID:???
文字列のお尻で高速に検索かけたいときはどうしてますか?
416NAME IS NULL:2011/04/13(水) 12:32:26.87 ID:???
尻から完全一致ならREVERSEした文字列フィールドを作ってインデックス

url = REVERSE('http://hibari.2ch.net/test/read.cgi/db/1295436346/')

SELECT REVERSE(url) FROM test WHERE url LIKE REVERSE('%/db/1295436346/')
417NAME IS NULL:2011/04/13(水) 13:12:19.24 ID:???
>>415じゃないけど、LIKE REVERSE('%/db/1295436346/') で前方一致になるからindexが効くという認識でよい?
418NAME IS NULL:2011/04/13(水) 16:12:52.44 ID:???
>>417
YES
419NAME IS NULL:2011/04/13(水) 18:42:53.61 ID:???
>>418
Thank you, baby!
420NAME IS NULL:2011/04/13(水) 19:01:45.24 ID:???
お尻を責めるならあらかじめひっくり返しておけ
ということか。万事に通ずる法則だな。
421NAME IS NULL:2011/04/13(水) 19:20:36.17 ID:???
一万件も同様の事があると思えんw
422NAME IS NULL:2011/04/14(木) 16:01:32.32 ID:hMS2SY+z
質問です
mysqlって何件くらいのデータ数で重くなりますか?
カラムにもよると思いますがおおよその答えでいいのでお願いします。
423NAME IS NULL:2011/04/14(木) 16:30:58.56 ID:???
カラムによります。
424NAME IS NULL:2011/04/14(木) 17:59:29.91 ID:???
>>422
1件より2件の方が重いです。
425422:2011/04/14(木) 20:32:50.06 ID:hMS2SY+z
まあ答えるの難しいよね
なんて質問したらいいのかな
でも言いたいことはわかるよね?
426NAME IS NULL:2011/04/14(木) 20:51:15.72 ID:???
>>425
適切な例を示せばいいんだよ。

そうすれば今度は「実測しろ」って言われるから。
427NAME IS NULL:2011/04/14(木) 22:07:37.76 ID:???
とりあえず、メモリに入り切るかどうかだろ。
428NAME IS NULL:2011/04/14(木) 22:11:56.89 ID:???
>>422
沢山だと重い。少なければ重くない。
429422:2011/04/14(木) 22:54:11.36 ID:hMS2SY+z
>>426
実測とかそんな高等テクニック持ってないし
ググっても見つからないからここで聞いてる
例を出して聞くと揚げ足取られるからなかなか難しいんですよ
でもこれって誰もが聞きたいことじゃないかな?
430NAME IS NULL:2011/04/14(木) 23:00:55.05 ID:???
回答出てるじゃん、>>424とか>>428とか。
これじゃ不満なわけ?
431NAME IS NULL:2011/04/14(木) 23:16:07.87 ID:???
自分でやってみればいいのに
メモリやCPUによっても変わってくるし答えようが無い
432NAME IS NULL:2011/04/14(木) 23:30:28.80 ID:???
>>422
100万件ぐらいまでならたいしたこと無い
ってどこかの大規模サイトの人がゆってた
433NAME IS NULL:2011/04/15(金) 02:57:12.92 ID:???
何万件だろうが適切にindexが設定されてて単純なクエリーなら重くない。
今度はindexのサイズが問題になるが元のtableのレコード数だけで示すことはできない。
434NAME IS NULL:2011/04/15(金) 12:23:40.74 ID:???
>>422
150万件くらいのデータと8000件くらいのデータ、innodb。
SELECTでJOINあり、条件あり。
my.cnfデフォで95秒くらい。

innodb_buffer_pool_size = 6G
query_cache_size = 64M
sort_buffer_size = 64M
join_buffer_size = 64M
とかで、3秒弱。

インデックスを使うようにすると、どちらも一瞬で終わる。

パフォーマンスはデータベースの設計により大きく左右されるが、最近のマシン(メモリ4Gとか)だと、
ほとんどをメモリに乗っかるようにしておけば、何も考えなくても数百万件くらいなら余裕なんじゃなかろうか。
435NAME IS NULL:2011/04/15(金) 14:31:48.42 ID:???
3秒って、そりゃまた随分と遅いなぁ
436NAME IS NULL:2011/04/15(金) 14:36:04.22 ID:???
>>435
インデックス振らなきゃそんなもんだろ
437NAME IS NULL:2011/04/17(日) 16:25:50.37 ID:???
よくデータをメモリに全部乗っけるという表現がなされますが、具体的にはどうすればいいのでしょうか?
ストレージエンジンをMemoryにするわけでは無いですよね
MyISAMのバッファをデータサイズ以上に設定しておけばOSが勝手にやってくれたりするのでしょうか
438NAME IS NULL:2011/04/17(日) 18:29:15.37 ID:???
>>437
あぁ、それウソだから。
データを全部メモリに乗せるなんて現代の技術では不可能だから。
デマに惑わされないように気をつけたほうがいいよ。
439NAME IS NULL:2011/04/17(日) 22:03:15.08 ID:???
ORDER BYでDESCとASCが両方あるときはどうしたらいいの?
440NAME IS NULL:2011/04/17(日) 22:13:35.21 ID:???
ORDER BY a DESC, b ASC,c DESC
441NAME IS NULL:2011/04/17(日) 22:21:05.41 ID:???
トホホな質問が続きます
442NAME IS NULL:2011/04/17(日) 23:05:39.08 ID:???
>>441
http://www.tohoho-web.com/
を参照ください。
443NAME IS NULL:2011/04/17(日) 23:19:13.15 ID:???
質問端折り過ぎた
ORDER BYでDESCとASCが両方あるとき
インデックスが効かないんだけどどうしたらいいの?
444NAME IS NULL:2011/04/17(日) 23:27:07.02 ID:???
仮に、両カラムをDESCに揃えたらインデックス利くの?
445NAME IS NULL:2011/04/17(日) 23:48:00.42 ID:???
>>441
低レベルSQL講座が始まってんだよ
察してやれ

アホ担当の方、さあ出番ですよ
ガムバって
446NAME IS NULL:2011/04/18(月) 00:19:30.20 ID:???
知っているかたがいらしたら教えてほしいのですが、
UNIQUE キーは SELECT 文等でも使われるのでしょうか。

それとも、重複チェックに使われるだけで、
INDEX キーのようには使われないのでしょうか。
447NAME IS NULL:2011/04/18(月) 00:30:56.04 ID:???
>>446
MySQLでは使われる
448NAME IS NULL:2011/04/18(月) 00:32:13.22 ID:???
>>443
インデックス格納順にアクセスすることにより
ソート処理を省く最適化のことを言っているなら、
ASCとDESC混ぜたらどうしようもないと思う
449NAME IS NULL:2011/04/18(月) 00:41:50.82 ID:???
>>447-448
良く知りもしないで適当なこと言ってんじゃねぇよw
450NAME IS NULL:2011/04/18(月) 06:00:35.97 ID:???
至って普通のLAMP構成でアプリ動かしてますが
MySQL5.1.50 InnoDBプラグイン使用で
スローログを見てると単純にINSERTするだけのログテーブルのINSERTに時間がかかっています
これは何が原因なのでしょうか
レコード数は現在800万程度です
451NAME IS NULL:2011/04/18(月) 11:28:05.87 ID:???
>>447>>449
>>446 ですが、
UNIQUEキーは単純にレコードをさがすときには
使われないのでしょうか…?
452NAME IS NULL:2011/04/18(月) 12:29:40.57 ID:???
使わない手は無いと考えるはずだよ、MySQLの設計者としても。 >>451

なんか一回の問合わせで一つのテーブルにはインデックスは
一つしか使われないとか、なんかそういうのがあったような気がするんで、
実際使われるかどうかは、EXPLAINで確かめた方がええんじゃないか。
453NAME IS NULL:2011/04/18(月) 15:02:39.99 ID:???
>>452
だから中途半端な知識で適当なこと言ってんじゃねぇっつーの
454NAME IS NULL:2011/04/18(月) 15:24:26.85 ID:???
>>453
とりあえず中途半端な知識だと思うなら補強してあげればいいだろうに。中途半端なままだからテキトーなレスをするんだろ?
455NAME IS NULL:2011/04/18(月) 15:31:56.84 ID:???
ユニークな方ですね
456NAME IS NULL:2011/04/18(月) 15:41:22.30 ID:???
>>448
explainの結果の話ね
どうしようもないのかなぁ
457NAME IS NULL:2011/04/18(月) 15:50:00.21 ID:???
SELECT * FROM unko ORDER BY a DESC, b ASC;
ようするにこれのORDER BY最適化を実現したいわけだけど

数値なら、インデックス用に -つけた数値もこっそり入れて
ASC,ASCに揃えてソートするとかのズルも出来るんだけど
両方文字列だとお手上げだわ・・・
458NAME IS NULL:2011/04/18(月) 16:39:24.90 ID:???
>>457
文字列を文字コードで数値化して-つければいいじゃん
つーか、どのみち複数のindexキーに対するorder byではindexは無効だから。
459NAME IS NULL:2011/04/18(月) 20:32:47.80 ID:???
サーバー上のPHPMyAdminをローカルにもコピーしようと思って、
エクスポート->SQLで書き出して、
それをローカル側のSQLで実行するとタイムアウトしてしまいます
大きすぎるからかもしれません
どうするのがよいでしょうか?
460NAME IS NULL:2011/04/18(月) 21:33:31.38 ID:???
>>457
create indexはカラム毎にASC/DESC指定できるだろ。
461NAME IS NULL:2011/04/18(月) 22:23:54.04 ID:???
wikipediaの編集履歴のような物を付けたいのですが
どのようにしたらいいでしょうか?

462NAME IS NULL:2011/04/18(月) 22:46:34.35 ID:???
>>460
create indexのASC/DESCは無効だろうがw
463NAME IS NULL:2011/04/18(月) 22:47:21.82 ID:???
>>461
編集履歴を保存するw
464NAME IS NULL:2011/04/18(月) 23:28:32.28 ID:???
>>452-454
結局、UNIQUE キーは INDEX 使われる、
ということで間違いないでしょうか…?
465NAME IS NULL:2011/04/19(火) 00:15:56.50 ID:???
>>459
細かく書き出す方法があるので小分けにして何度かやる
あるいはデータを圧縮して書き出すと成功しやすい

それでもダメな規模ならmysqldumpとかで調べてください
466NAME IS NULL:2011/04/19(火) 00:48:32.09 ID:???
最近、ほんとアホな質問多すぎないか?
467NAME IS NULL:2011/04/19(火) 01:21:57.85 ID:jwljFgPx
誰か知っていたらヒントだけでも
2台のマシンで、mysql clusterを使ってるんだけど
差分バックアップはbinlogでいいのだろうか?

mysqlbinlogでバイナリログをsqlに戻すと、大量のUnknown eventがでて困ってる。

MySQL Clusterは6.3、SQLノードはMySQL5.1
そもそもbinlogじゃだめだったりするのか?
Cluster使ってる人、障害対策ってどうしてる?
468NAME IS NULL:2011/04/19(火) 01:41:57.28 ID:???
>>466
かといって467みたいにちょっと高度な質問には答えられないんでしょ?お高く止まってる場合じゃないって もっと危機感持てよsqlite3に抜かれるぞ?
469NAME IS NULL:2011/04/19(火) 02:13:49.41 ID:???
>>458
100文字使う予定なので無理です
あと、複数じゃなければ有効です
>>462
ですよね
470NAME IS NULL:2011/04/19(火) 08:35:44.94 ID:???
>>469
BLOBやascii_binとかのカラムに、文字列
バイトの補数データをいれとけば?
471NAME IS NULL:2011/04/19(火) 11:15:24.50 ID:???
>>470
100桁の数値として扱うってことか。なるほど。
472NAME IS NULL:2011/04/19(火) 12:32:15.50 ID:???
SQL質疑応答スレ
http://hibari.2ch.net/test/read.cgi/db/1299305530/l50

MySQLに依存する問題ならまだしも、SQL初級は↑でやってくれ

質問者がアホ過ぎて、どちらで質問すべきかすら分かってないと思うけど
473NAME IS NULL:2011/04/19(火) 15:41:01.01 ID:???
過去100レスくらいにはMySQL依存の質問しかないみたいだけど
474762:2011/04/19(火) 18:06:24.03 ID:4KoCmCJG
>>472
MySQL上級者スレってわけじゃないんだからどんな質問でもいいじゃん
そうやって初心者を排除していくと過疎化するだけだぞ
475NAME IS NULL:2011/04/19(火) 18:49:37.96 ID:???
>>472
じゃあお前早く467の質問に答えてやれよ
どうせ答えられないくせに上級者ぶって初心者馬鹿にしてスレの過疎化に貢献してんじゃねーよ
476NAME IS NULL:2011/04/19(火) 18:52:16.91 ID:pVcTtZv8
テーブル作成でint型のところに文字を入れて更新してしまい、
該当レコードが0になる問題が発生しました。

「UPDATE user SET age='age+1'」
みたいなSQLを実行してしまったのです・・。

こういうミスを避ける為に、
テーブル側で、数字しか受け付けないような設定って出来ないでしょうか?
477NAME IS NULL:2011/04/19(火) 19:42:44.25 ID:???
制約
478NAME IS NULL:2011/04/19(火) 19:57:30.26 ID:???
>>476
STRICTモードでそうならないか?
テーブル単位ではないけどな。
479NAME IS NULL:2011/04/19(火) 21:02:34.28 ID:???
>>476
データ型
480NAME IS NULL:2011/04/19(火) 21:52:19.44 ID:???
mysqlにsighupを送信すると、mysqlは何をするのでしょうか?

また、mysqlにこのシグナルを送れば、こういう処理をする、といったような情報は
どこを見ればわかりますでしょうか?(プログラムソースを見るしかないでしょうか?マニュアルを見たのですが見つけられませんでした。)

481NAME IS NULL:2011/04/19(火) 22:08:08.93 ID:???
>>480
http://dev.mysql.com/doc/refman/5.1/ja/flush.html

大事なことはみんなマニュアルに書いてある
一度でいいから、意味がわからなくてもいいから、
最初から最後までマニュアルを読め
482NAME IS NULL:2011/04/19(火) 22:37:55.70 ID:???
>>476
sqlモード、どうなってんですか?

俺んとこでは
int型のところにそのようにupdateで入れてみたら
1366 - Incorrect integer value:
でエラーになって返ってきたんですけど。

ちなみにsql-modeは
STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
にしてますが
483NAME IS NULL:2011/04/19(火) 22:46:56.86 ID:jwljFgPx
やっぱMySQL Cluster使ってる人少ないのか・・・

難しく考えずに、「MySQL クラスタ」で検索したら少しわかった。

チェックポイントなるものがあって、ログはDB自体に入ってるようないないような。
引き続きMySQL Cluster の障害対策方法知っているかたいましたらヒントだけでも・・・
484NAME IS NULL:2011/04/19(火) 22:56:48.59 ID:pVcTtZv8
>>478,482
sqlモードっていうのを指定したら>>476のような問題は回避できるんですか?
今まで特に意識したことはありませんでした

>>476
それはintにしています。
485NAME IS NULL:2011/04/19(火) 23:09:23.36 ID:???
ググって調べて>>478さんや>>482さんの言うように
my.cnfに「sql-mode="STRICT_TRANS_TABLES"」と追記して
改めて>>476を実行したところ、エラーになって更新できませんでした。

sqlモードの件、非常に勉強になりました。ありがとうございます。
486NAME IS NULL:2011/04/20(水) 00:02:16.29 ID:???
お前ら俺の質問がスルーされてるんだけど、早く答えろよ
487NAME IS NULL:2011/04/20(水) 01:10:51.86 ID:???
>>486
レス番号を示せば答えてあげます
488NAME IS NULL:2011/04/20(水) 01:32:11.79 ID:???
>>437をお願いします
489NAME IS NULL:2011/04/20(水) 06:54:51.52 ID:???
>>450何かわかりませんでしょうか
490NAME IS NULL:2011/04/20(水) 09:12:08.94 ID:???
>>488
ストレージエンジンはMyISAMかInnoDB、mysqld起動後に

SELECT COUNT(<non_primary_key>) FROM <target_table>;

を打ち込んで、すべてのデータをOSのファイルキャッシュか
InnoDBバッファプールに読み込ませるというテクニック
491NAME IS NULL:2011/04/20(水) 09:15:25.71 ID:???
>>489
それだけじゃ分からん。
まずは他のトランザクションがそのINSERTをとめていないか
SHOW ENGINE INNODB STATUS;
SHOW FULL PROCESSLIST;
を何度も取ってみて考える。

あとinnodb_buffer_pool_sizeが極端に小さくないか、
long_query_timeも極端に小さくないかを確認する。
492NAME IS NULL:2011/04/20(水) 10:20:22.95 ID:???
そんな説明じゃ伝わらないな
493NAME IS NULL:2011/04/20(水) 10:58:30.38 ID:???
>>491
ていうかあれだけでわかるだろ普通
494NAME IS NULL:2011/04/20(水) 11:39:48.15 ID:???
あれで分かるよねヤッパ
495NAME IS NULL:2011/04/20(水) 15:06:17.60 ID:o2haFwx5
コマンドラインでデータベースにログインすると
unknown variable 'tmp_table_size=◯◯MB'
と出てしまいます。

tmp_table_sizeは使えないのでしょうか?

496NAME IS NULL:2011/04/20(水) 15:10:05.72 ID:???
>>495
ログインしたときの画面表示を省略しないでそのままコピペしてみて
497NAME IS NULL:2011/04/20(水) 16:29:19.67 ID:???
>>495
使えません。いじった設定ファイルは元に戻してください。
バックアップを取って無かったなら市ね。
498NAME IS NULL:2011/04/20(水) 17:06:22.96 ID:???
WordPressがMySQLでしか動かないからしぶしぶMySQLを使ってるが
早くこんなクズ共のいるスレから移動したい
499NAME IS NULL:2011/04/20(水) 17:40:34.71 ID:???
Postgresスレはもっとクソだらけだがな
500495:2011/04/20(水) 17:44:49.85 ID:o2haFwx5
>>496
こんな感じです。
# mysql -u ユーザ名 -p DB名
mysql: unknown variable 'tmp_table_size=512MB'

といった感じで表示されて、
ログインできませんでした。

tmp_table_sizeを設定している行をコメントアウトすると
ログイン出来ました。

>>497
まじっすか。
色んなサイトを見てると設定されている方の文献を見つけますし、
MySQLAdminでもtmp_table_sizeに関するアドバイスが出ていたので
使えるものかと思っていました。

バックアップは取ってあるから大丈夫です。
501495:2011/04/20(水) 17:54:20.83 ID:???
MySQLAdminじゃなかったphpMyAdminでした
おはずかしい。
502NAME IS NULL:2011/04/20(水) 17:58:39.67 ID:???
>>500
tmp_table_size って mysqld のパラメータであって
mysql client のパラメータじゃないよね。
[mysql] とかで設定してるだけじゃないかな
503495:2011/04/20(水) 18:14:27.87 ID:???
>>502
おっしゃるとおりでした。
[mysql]に設定していました。

本来の目的は
[mysqld]に設定したかったので
修正しました。

ありがとうございました。
504NAME IS NULL:2011/04/21(木) 00:32:48.77 ID:???
DELETE FROM MySQLスレ WHERE user = アホ
505NAME IS NULL:2011/04/21(木) 00:39:52.82 ID:???
オンラインマニュアルを本にして売ってくれんもんかねえ。
506NAME IS NULL:2011/04/21(木) 00:43:09.75 ID:???
逆行
507NAME IS NULL:2011/04/21(木) 01:17:34.04 ID:???
508NAME IS NULL:2011/04/21(木) 01:23:16.22 ID:???
紙で読みたい
509NAME IS NULL:2011/04/21(木) 01:25:49.39 ID:???
キンコーズ持ってって印刷から製本までしてもらえるよ
510NAME IS NULL:2011/04/21(木) 01:36:33.48 ID:???
オライリーブランドでマニュアル売り出せば、危篤な方が大量に買ってくれそうだ。
511NAME IS NULL:2011/04/21(木) 05:57:07.13 ID:0m0MMwnf
質問させてください

phpmyadinでcsvファイルをインポートするときに、
上からcsvファイルに記述した順にインポートしてほしいのですが、
csvファイルで記述した順にインポートされません
なぜか順番が違います
どうしたらいいのでしょうか?
512NAME IS NULL:2011/04/21(木) 08:11:49.80 ID:???
>>511
そもそもMySQL自体が、入れたときの順番で出すという仕組みになってない。
OracleもPostgreSQLも一緒。順番は適当。
何かの順番で出したければSELECT文にORDER BY句をつけること
513NAME IS NULL:2011/04/21(木) 08:24:40.82 ID:0m0MMwnf
>>512
そうだったんですか、なんだか不思議ですね
どうもありがとうございました
514NAME IS NULL:2011/04/21(木) 10:23:48.38 ID:???
>記述した順にインポートしてほしいのですが
こういう感覚のズレは、センスのなさの現われだなw
こんなアホな思考回路持った奴、学生でもいねえよ
515NAME IS NULL:2011/04/21(木) 10:41:29.91 ID:???
>>514
おまえちょっと口閉じてろ
516NAME IS NULL:2011/04/21(木) 10:43:45.42 ID:???
>>514
プログラミングとか慣れてなきゃ当然の感覚だろうに。どうでもいいトコ突付いて蔑むな。
517NAME IS NULL:2011/04/21(木) 11:13:15.33 ID:???
>516
>当然の感覚だろうに
自己弁護しなさんな
これを当然と捉えるお前って、自分はバカですって言ってるようなもんだぞ
アホと同レベルってこった

「記述した順にインポート」なんて発想、最高に笑えるよ

ネタ帳に追加しとくわ
518NAME IS NULL:2011/04/21(木) 11:46:44.50 ID:???
joinするだけで200msかかってんだけどどうすれば早くなりますか?
indexは張ってあって1万件くらいです
519NAME IS NULL:2011/04/21(木) 11:51:54.78 ID:???
>>498
>WordPressがMySQLでしか動かないからしぶしぶMySQLを使ってるが
>早くこんなクズ共のいるスレから移動したい
自身の頭のレベルは棚に置き言いたい放題
520NAME IS NULL:2011/04/21(木) 12:45:31.01 ID:???
>>518
鯖のスペック書け
あと、MySQLに割り当て可能なリソースもだ

チューニングはそれからだ
521NAME IS NULL:2011/04/21(木) 13:06:16.29 ID:???
>>520
さくらのvps512MBです
522NAME IS NULL:2011/04/21(木) 13:37:34.23 ID:???
>>521
答えになってねえ
523NAME IS NULL:2011/04/21(木) 13:47:06.68 ID:???
>>518
どんなテーブル設計なんか分らんし。
524NAME IS NULL:2011/04/21(木) 14:50:42.34 ID:???
>>518
インデックスを 有効に働くように適切に設定すれば 速くなる
525NAME IS NULL:2011/04/21(木) 15:39:44.59 ID:???
>>519
何、WP更新するたびに一々他のDBに対応させる修正をしないといけないってか
526NAME IS NULL:2011/04/21(木) 16:03:07.30 ID:???
なんだかんだ言って、やさしい奴が多いな
あんな質問に答えようとしてる

ほっこりしたよ
527NAME IS NULL:2011/04/21(木) 17:20:41.57 ID:e9JnJWF0
サイトID|ページID|アクセス数
1 | 1 | 100
1 | 2 | 150 
2 | 3 | 120

テーブル内のレコードがこういう状態だとして、
アクセス数が一番多いサイトのページをランダムで1件表示したいと思います。

ORDER BY アクセス数 DESC

で並べ替えるのは分かるのですが、GROUP BY サイトID
をすると「ランダムで」という条件が出来なくなります。

サブクエリで一旦、集計してそれからORDER BY RAND() 
にするしかないのでしょうか?
528NAME IS NULL:2011/04/21(木) 19:40:13.94 ID:???
そりゃそうだろ
529NAME IS NULL:2011/04/21(木) 19:47:43.78 ID:???
>>528
いや、ちょっと待ってろ。 そうでもないことが判明した。
530NAME IS NULL:2011/04/21(木) 21:15:59.08 ID:???
二つ指定すればいいだけの話では?
531NAME IS NULL:2011/04/21(木) 21:58:42.14 ID:e9JnJWF0
自分では想像つきません・・。
どういうSQLか教えてください
532NAME IS NULL:2011/04/21(木) 23:24:46.26 ID:???
ただでは教えられへんなぁ
533NAME IS NULL:2011/04/21(木) 23:28:44.63 ID:???
>>527
データベース側じゃなくて、
プログラム側でランダムに1-30の中から1つ数字だしてオフセットにすれば?
534NAME IS NULL:2011/04/22(金) 00:43:32.98 ID:???
俺の清めた体で払いますので
535NAME IS NULL:2011/04/22(金) 02:55:11.44 ID:???
5分間煮沸消毒してください
536NAME IS NULL:2011/04/22(金) 20:19:14.08 ID:SnCFSXDp
初歩的な質問ですみません
ORDER BYした結果をGROUP BYするにはどうしたらいいでしょうか?
1行でお願いします
537NAME IS NULL:2011/04/22(金) 20:21:58.25 ID:???
副問い合わせる
538NAME IS NULL:2011/04/22(金) 22:48:22.73 ID:???
GROUP BYしてSORTするんじゃダメなのか?uniqとは違うから。
539NAME IS NULL:2011/04/23(土) 12:29:11.27 ID:???

40個のカラムを持つテーブルに
1000万件レコードが登録されていて
そのなかの1000件ほどを抽出しようとすると
select 〜のクエリを実行するのに1分かかってしまいます。

インデックスもはってるのに
1分というのは結構な時間が
かかっているように感じます。

そんなものなのでしょうか?

innodb_buffer_pool_sizなどのの使用量も
512MBまで増やしているのですが・・・。
540NAME IS NULL:2011/04/23(土) 12:31:24.56 ID:???
3秒以上かかったら重大なバグと見なしてる俺には
どう見ても何かがおかしいようにしか見えない
541NAME IS NULL:2011/04/23(土) 12:37:23.07 ID:???
>>539
1000件じゃなくて100件とかはどうなの?
542NAME IS NULL:2011/04/23(土) 12:45:02.54 ID:???
>>539
> 40個のカラム

select でカラム絞れ
543539:2011/04/23(土) 12:54:11.18 ID:aAzoxdx1
>>540
ですよねー
かかりすぎですよね

>>541
100件とかでも1件とかでも時間がかかります。


>>542
40個あるカラムのうち
必要となるのが35個ほどあるので
カラム名をSQL内では指定しているのですが
やっぱり時間かかってます。。。



SQLはPHP内に記述しているのですが、
PDOの設定とかも関係してくるのでしょうか・・・
544NAME IS NULL:2011/04/23(土) 13:08:04.48 ID:???
インデックス使われてないんじゃないの
545NAME IS NULL:2011/04/23(土) 13:19:28.23 ID:???
>SQLはPHP内に記述しているのですが、
>PDOの設定とかも関係してくるのでしょうか・・・

んじゃとりあえず、同等のSQLをMySQLから手打ちしてみたら?
それでも遅いかどうかでPDOが関係してるかどうか分るじゃろ。
546NAME IS NULL:2011/04/23(土) 13:25:42.43 ID:???
1件でも時間かかるって異常だなw
547539:2011/04/23(土) 13:47:11.59 ID:aAzoxdx1
>>544

EXPLAINで確認して、インデックスが使われていなかったとしたら、
インデックスの張り方に問題があるということでしょうか?

SQLの記述にも注意すべき点があるのでしょうか?

>>545
コマンドから同等のSQLを実行したところ、
同じように1分近く時間がかかりました。

CPUもメモリも30〜40%程しか利用していないようなので
どこかチューニングに問題があるのでしょうか?


>>546
ですよねー。私もそう思います。
何とかならないものなのでしょうか。。。。
548NAME IS NULL:2011/04/23(土) 14:01:21.74 ID:???
>>547
インデックス使われてなかったんだなw
549539:2011/04/23(土) 14:03:45.04 ID:aAzoxdx1
>>548
あ、まだわかんないっす。
今から調べてみようかとしているところです。

550NAME IS NULL:2011/04/23(土) 14:25:20.75 ID:???
書いてる暇あったら調べれば?
これだけ人巻き込んでおいて「調べてみようか」って何様?
そもそも遅いのを問題にしてるくせに初めから一度もexplainしてないとか有り得なくね?
551NAME IS NULL:2011/04/23(土) 15:21:45.74 ID:???
コマンドから同等のSQLを実行するときに
先頭にEXPLAINってつけるだけなんだぜ
552NAME IS NULL:2011/04/23(土) 15:23:11.79 ID:???
データが無いとexplainできない ってのは
構造的欠陥だと思うんだ
553539:2011/04/23(土) 15:25:23.46 ID:???
>>550

気を悪くしたのならごめんなさい。
explainもこちらに書き込んだ当初は知らなかったのです。
皆さんの知見にたよりつつ
並行して自分でも手探りで調べている状態です。
554NAME IS NULL:2011/04/23(土) 15:54:23.19 ID:???
で、結果は?
555539:2011/04/23(土) 18:59:02.98 ID:???
気にしてくれてる皆さん、
ありがとうございます。
ただ今、別件で外にいまして、まだ実行できておりません。ごめんなさい。
月曜までには必ず報告しますのでしばらくお時間をください。
556NAME IS NULL:2011/04/23(土) 19:47:31.25 ID:???
絶対に許さない
557NAME IS NULL:2011/04/23(土) 20:27:28.96 ID:???
>>555
とりあえず今日のパンツの色を教えてくれ
558NAME IS NULL:2011/04/23(土) 21:12:33.12 ID:???
赤紫とシャンパンゴールドのストライプに群青色のイチゴのプリントが入っています。
脱ぎたてが欲しい方は速達で送りますのでメールアドレスをお知らせください。
559NAME IS NULL:2011/04/24(日) 16:47:36.03 ID:???
色ややこしいわw
560NAME IS NULL:2011/04/24(日) 19:34:28.37 ID:???
>>510
奇特
561NAME IS NULL:2011/04/24(日) 19:40:10.24 ID:???
>>558
群青色のいちご、ってそりゃ別のベリーじゃないの?
562NAME IS NULL:2011/04/24(日) 20:18:24.20 ID:???
>>510
危篤わろた
563NAME IS NULL:2011/04/24(日) 20:32:30.86 ID:???
>>562
ある意味あってるだろ
564539:2011/04/25(月) 12:08:39.90 ID:b0NRbWiN
おはようございます。

本日exlplanを使用して、
インデックスが利用されているかを確認してみました。

結果、こちらが意図する動きではなく、
インデックスも使用されていませんでした。

検索用に追加したインデックスの列の項目と
実際にSQLで使用している列とに1個差異があったので、
検索で使用する列のみを指定したインデックスを
追加作成しました。

そうしたところ、今まで1分弱掛かっていたクエリも
1秒で終わるようになりました。

あとは、登録処理にどれほど影響が出ているのかを
確認していこうと思います。

皆様にはたいへんお世話になりました。
まずはご報告まで。
565NAME IS NULL:2011/04/25(月) 15:34:14.69 ID:???
ほほう
566NAME IS NULL:2011/04/25(月) 22:48:03.49 ID:???
インデックスを貼る効果はこれぐらいあるんですよ〜って教科書に載りそうなお話 w
567NAME IS NULL:2011/04/26(火) 17:08:52.78 ID:???
インデックスを貼ってるカラムを削除する場合、
インデックスを削除してからカラムを削除しなけれなばならいのですか?
それともいきなりカラム削除すればインデックスも削除されるのでしょうか?
568NAME IS NULL:2011/04/26(火) 18:30:24.94 ID:???
>>567
すごく不思議な消え方をした。

mysql> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`c1` int(11) NOT NULL,
`c2` int(11) DEFAULT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`),
KEY `test_ix1` (`c2`,`c3`),
KEY `test_ix2` (`c3`,`c2`),
KEY `test_ix3` (`c2`),
KEY `test_ix4` (`c3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> alter table test drop column c3;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`c1` int(11) NOT NULL,
`c2` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`),
KEY `test_ix1` (`c2`),
KEY `test_ix2` (`c2`),
KEY `test_ix3` (`c2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
569NAME IS NULL:2011/04/26(火) 18:55:12.71 ID:???
不思議でもなんでもない。それをするのがDBMSの役目。
570NAME IS NULL:2011/04/27(水) 01:49:52.66 ID:???
>>544は神
571NAME IS NULL:2011/04/27(水) 01:51:37.09 ID:???
すみません教えてください。

http://d.hatena.ne.jp/omiyan/20110118/p1
この通りバージョンアップして、mysql --version をしたら、
mysql Ver 14.14 Distrib 5.5.11, for Linux (x86_64) using readline 5.1
となっていたのですが、mysqlに入ってselect version();したら、
5.0.77 と返ってきました。
これはどちらが正しいのでしょうか。

RENAME DATABASE をしたらエラー(ERROR 1064 (42000))に
なったのですが、ということはまだ5.0.77ということなのでしょうか。

ご教示いただけますと幸いです。
572NAME IS NULL:2011/04/27(水) 02:53:13.70 ID:???
見てるmysqlが違う
573571:2011/04/27(水) 03:20:24.53 ID:???
>>572
ご教示ありがとうございます。

やったことは、
yum remove mysql mysql-server php-mysql
yum -enablerepo=remi mysql mysql-server php-mysql
といったようなことなのですが、これで2つのmysqlが
共存しているような状態になっているのでしょうか。
574NAME IS NULL:2011/04/27(水) 07:10:58.70 ID:???
>>571
どちらも正しい
mysql --version はmysql のバージョン
select version() はmysqld のバージョン
mysqld は 5.0.77 なのでRENAME DATABASE はできませんねん
575NAME IS NULL:2011/04/27(水) 11:52:53.07 ID:???
ではmysqldをバージョンアップすればよいのでしょうか。
yum remove mysqld mysqld-server php-mysqld
yum -enablerepo=remi mysqld mysqld-server php-mysqld
としてみましたが、うまくいかないようです。
576571:2011/04/27(水) 15:12:45.75 ID:???
>>574
ありがとうございます。
なるほど。mysqldがバージョンアップされてないんですね。

>>575さん同様、私も同じ方法でうまくバージョンアップ
できていないんですね。困りました。。
577NAME IS NULL:2011/04/27(水) 16:15:33.55 ID:???
困ったときはお互い様です。
578NAME IS NULL:2011/04/27(水) 20:30:17.64 ID:???
>>576
yumした時に、Repository の項目がremiとなってますか?

ないなら、remiが有効になってないからかも。
remiのリポジトリの追加はこの辺で。
http://blog.suz-lab.com/2009/03/yumepelremicentos-52.html
579571:2011/04/27(水) 23:19:34.31 ID:???
ありがとうございます。

バージョンアップは解決しました。
具体的には、下記で解決しました。
http://centoshome.seesaa.net/article/117329591.html

ただ、肝心のRENAME DATABASEができませんね。。

5.5になったのですが、もしかして5.5ではRENAME DATABASEは
実装されていないのでしょうか?
だとしたら、DB名の変更は何か他に楽にできる方法はあります
でしょうか。
580NAME IS NULL:2011/04/28(木) 00:56:44.47 ID:???
require_once("MDB2.php");
で呼び出して、
$res = $mdb2 -> query("SELECT * FROM `foo` where `id` = '$id'");
という感じで繋いでるんですが、サーバーでは繋がるんですがローカルでは繋がらず
Call to undefined method MDB2_Error::fetchRow()
というエラーがでるんですが、どうしたらいいでしょうか

pear listで確認したら
MDB2
mdb2_Driver_Mysql
mdb2_Driver_Mysqli
がはいってます
PHP Versionは5.3.1です
xamppのバージョンは1.7.3です
581NAME IS NULL:2011/04/28(木) 01:03:43.95 ID:???
582NAME IS NULL:2011/04/28(木) 01:04:18.16 ID:???
583NAME IS NULL:2011/04/28(木) 01:09:34.62 ID:???
>>580
DB_FETCHMODE_ASSOC を指定してるというオチじゃないだろうな
584NAME IS NULL:2011/04/28(木) 01:12:48.56 ID:???
>>583
次の行に
while ($row = $res -> fetchRow(MDB2_FETCHMODE_ASSOC)){
ってやって受け取ったデータを処理してます
585571:2011/04/28(木) 01:55:47.14 ID:???
>>581 >>582

廃止されてたんですね。
ありがとうございました。
586NAME IS NULL:2011/04/28(木) 02:57:09.00 ID:???
>>584
じゃぁサーバーとローカルで環境が違うからだろう。
その辺を具体的に書かなきゃエスパーでない限りわからんな。
587NAME IS NULL:2011/04/28(木) 12:20:19.68 ID:???
MySQL で DB サーバ上のシステム時刻をミリ秒またはマイクロ秒精度で
取得するにはどうしたらいいですか? そもそも TIMESTAMP 型が秒精度
なので SELECT CURRENT_TIMESTAMP() じゃどうしようもならんし。
588NAME IS NULL:2011/04/28(木) 13:19:06.36 ID:???
589NAME IS NULL:2011/04/28(木) 13:39:38.36 ID:???
>>587
ググったらこんなページ見つけたけど
http://d.hatena.ne.jp/download_takeshi/20071124/1195915196
590NAME IS NULL:2011/04/28(木) 13:41:14.67 ID:???
ユーザー定義関数でもいいけど、MySQLを呼び出す側のPHPとかからmicrotime渡したほうが早い気がする
591NAME IS NULL:2011/04/28(木) 14:23:27.68 ID:???
24時間365日動くシステムでMySQLを使っているのですが、
皆さんはバックアップはどの様にされてますか?

どこかで、MySQLのダンプの機能は
バックアップとしては使えないといった
書き込みを見たような気もするのですが・・・。

ストップできないシステムなので、
データフォルダをコピーするといったことが
難しいので、皆さんはどの様にされているか
教えて頂けないでしょうか?
592NAME IS NULL:2011/04/28(木) 14:29:50.04 ID:???
mysqldumpをcronで毎日実行して別サーバーへ転送してる
最新の状態ではないが最悪前日の状態には戻せる
mysqldumpでちゃんと復元できるよ
593NAME IS NULL:2011/04/28(木) 14:32:10.98 ID:???
mysqldumpで復元できるってのは、mysqldumpでバックアップしたデータでもちゃんと復元できるって意味な
594591:2011/04/28(木) 14:44:56.04 ID:???
なるほどです。
ありがとうございます。

私もmysqldumpを使ってバックアップを取るようにします。

595NAME IS NULL:2011/04/28(木) 14:59:09.52 ID:???
レプリケーションしてスレーブのハードディスクからスナップショット作ってる
596591:2011/04/28(木) 15:40:51.94 ID:???
なるほど。
レプリケーションを利用されているのですね。

今回はシステム規模も小さく、
サーバを1台しか用意できなかったので、
レプリケーションは選択肢から外しておりました。
今後の参考にさせていただきます。
597NAME IS NULL:2011/04/28(木) 20:15:35.43 ID:9EvrpqTs
phpmyadminをxamppにインストールしたんですけど、
いきなりパスワードを聞かれます
rootっていれて、パスを空でインしようとするとIDかパスが違うって言われるんですが、
初期設定ではなにをいれたらいいんでしょうか?
598NAME IS NULL:2011/04/29(金) 10:28:06.51 ID:???
>>597
空でいい
599NAME IS NULL:2011/04/29(金) 13:20:17.47 ID:???
横槍で申し訳ないが
mysqldumpってそこそこ時間かかるしバックアップ中はサイトにアクセス出来なくなるし
毎日mysqldumpって現実的な手段になるの?
600NAME IS NULL:2011/04/29(金) 14:15:08.29 ID:???
InnoDBならバックアップ中でもアクセスできる
MyISAMなら仕方ない
601NAME IS NULL:2011/04/29(金) 14:32:33.36 ID:???
サービス規模によるね
停止しても15秒程度なら問題無いとかね。

実際いくつかmysqldumpを朝4時頃回してる
602NAME IS NULL:2011/05/02(月) 01:08:34.66 ID:8rRRCVud
質問です
mysql+phpを使用していますが

$sql = "select * from table";
$rst = mysql_query($sql,$con);
while($rows = mysql_fetch_array($rst)){
$sql2 = "select count(id) as cnt from table where title = '$rows[title]'";
$rst2 = mysql_query($sql2,$con);
$rows2 = mysql_fetch_array($rst2);
$cnt = $rows2[cnt];
}
とかやるとめっちゃ遅いです。表示されるまで10秒くらいかかります。
titleが何件あるか取得したいだけなのですが、これでは遅すぎるので
もっと早く処理するいい方法あったら教えてください。よろしくお願いします。
603NAME IS NULL:2011/05/02(月) 02:14:30.14 ID:???
select * from table だと title が同じレコードを複数持ってきて
全行に select count(id) ... を実行するから遅くて当たり前

@select * from from table を select title from table group by title にする

Aselect title, count(*) from table group by title

とにかくSQLの勉強をしなさい
604NAME IS NULL:2011/05/02(月) 03:29:40.32 ID:???
>>603
Group 使うのと distinct はどっちが早いんかな。
まぁ、自分で試すか。
605NAME IS NULL:2011/05/02(月) 09:46:20.52 ID:???
インデックスの有無も気にした方が良い
606NAME IS NULL:2011/05/02(月) 17:18:33.18 ID:???
SQL文を解釈して実行するプログラムはプログラミング言語を処理するコンパイラの様に
字句解析、構文解析といった処理を行ってるのかな?
コンパイラの作り方の本を読めば参考になるかな?
それとも全く別で関係ない?
607NAME IS NULL:2011/05/02(月) 18:54:45.01 ID:???
>>606
MySQLはインタプリタにbisonの字句解析が入ってるはず
(インストールするときにbisonがないって文句言われた)
608NAME IS NULL:2011/05/02(月) 19:13:06.61 ID:???
SQL文なんてプログラミング言語に比べたら解析簡単だろ
参考にはなるけどレベル高すぎると思う

とりあえず SQL 構文解析 で調べたほうがいい
609NAME IS NULL:2011/05/02(月) 22:09:11.84 ID:???
>>608
いや、たぶんそんなにカンタンでもない。
厳密なSQLだと、yacc/bisonのような
字句構文解析系が使えないだろ。

>>607のいうとおり、MySQLは使ってる
ようなんだけど、それ由来の制限も
ドキュメントに書いてあったはず。
予約語がどうこうとかみたいな?
610NAME IS NULL:2011/05/02(月) 22:34:48.63 ID:???
MyPhpAdminみたらいいんじゃないの
611NAME IS NULL:2011/05/02(月) 22:35:19.50 ID:???
スマン関係ないか
612NAME IS NULL:2011/05/02(月) 22:40:19.31 ID:???
>>611
微塵も関係ないな
613NAME IS NULL:2011/05/03(火) 20:09:23.94 ID:???
phpMyAdminなら関係あるのか?
614NAME IS NULL:2011/05/03(火) 20:32:05.06 ID:???
あれはそのままSQLに渡してるだけじゃねーの
615NAME IS NULL:2011/05/03(火) 21:49:34.31 ID:???
>>614
一応ちょっと解析っぽいことはしてる
616NAME IS NULL:2011/05/03(火) 22:05:55.32 ID:???
「一応」「ちょっと」「解析っぽい」w
617NAME IS NULL:2011/05/04(水) 00:01:34.57 ID:???
何が笑えるんだろう??
結構的確な表現だと思うのだがー
618NAME IS NULL:2011/05/04(水) 00:25:49.79 ID:???
曖昧な言葉を3つも並べて何が「的確」だよw
619NAME IS NULL:2011/05/04(水) 00:28:46.21 ID:???
ソース見れば的確かどうかわかるのにね
620NAME IS NULL:2011/05/04(水) 09:42:46.01 ID:2ZdGWZNh
ショートURLサービスを作ってみようと思うんですが、
http://bit.ly/パラメータ」のあのパラメータは64進数の数値だそうで、
あらかじめ一定の範囲のパラメータをDBにパラメータテーブルとして持たせておこうと思います。
構成は
id(主キー、auto_increment)/param/is_used(使用済みチェック)
1/abc1/0
2/abc2/0
3/abc3/0
こんな感じにしたいのですが(数値は適当です)、たとえばパラメータの値を100000〜300000まで
あらかじめ入れておくとして、
プログラム(php)のfor文で「indexを64進数に変更してinsertを20万回ループ」させるのは
おかしい気がします。
Mysql5の機能だけでスマートに実現する方法はあるでしょうか?

あと、上のパラメータテーブルの構造はおかしいでしょうか。
idは要らないのかな、is_usedも無用で利用されたパラメータの行は削除の方が良いんでしょうか。
621NAME IS NULL:2011/05/04(水) 13:36:08.71 ID:???
俺ならオートインクリで36進数使うかな
622NAME IS NULL:2011/05/04(水) 13:50:35.69 ID:???
>>620
ショートURLサービスは特許登録されていますから、手法が似てると侵害で訴えられますよ
623NAME IS NULL:2011/05/04(水) 15:51:37.43 ID:???
>>622
それでお金儲けしなきゃ問題ない
624NAME IS NULL:2011/05/04(水) 19:50:26.73 ID:???
>>623
金儲けしなかったら特許侵害してもいいのか。
知らなかった。
じゃあ、非営利団体はやりたい放題できるな。
625NAME IS NULL:2011/05/04(水) 20:49:27.31 ID:???
>>624
とりあえず>>623の揚げ足取りたかった事は理解したが、脊髄反射のそれは馬鹿にしか見えんぞ。
626NAME IS NULL:2011/05/04(水) 21:05:54.56 ID:???
それ揚げ足じゃねぇだろ
627NAME IS NULL:2011/05/04(水) 21:32:45.96 ID:???
>620が無料サービスしたせいで、ビジネス機会損失したら
余裕で損害賠償請求始めるわ
628602:2011/05/04(水) 21:41:42.00 ID:f+jsRo3a
>>603
レスありがとうございます。
教えられた通りやったのですが速くなりませんでした…

>>605
インデックスは使ったことがありませんでした。初心者ですみません。
そこでインデックスを数日勉強してやってみたのですが

@テーブル作成
CREATE TABLE goods(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),INDEX title_index(title));

Aselect count(title) as cnt from table where title = '$rows[title]' でcntを取得

これで間違ってないでしょうか?よろしくお願いします。
629620:2011/05/05(木) 10:04:52.48 ID:zYH1Ia7Y
>>621
すみません、どうしてその方法を選んだのか良かったら教えてください

>>622
え!そうなんだ!?知らなかった…
既存の自分のサイトにだけリンクする機能として使おうと思ってるんだけどそれでもダメなのかな
うーむ、でも聞いて良かった。ありがとうございます
630NAME IS NULL:2011/05/05(木) 14:56:14.62 ID:???
>>629 冗談だボケ
まぁ本当に特許取ってるかも知れんけど俺は知らんよ
631620:2011/05/05(木) 15:21:54.71 ID:C4QwRBw+
>>630
そうなの?安心したー

あらかじめ20万行くらいのテーブルを作る件は、やっぱりプログラム(php)で
20万回insertするしかないんでしょうか?
632NAME IS NULL:2011/05/05(木) 16:00:46.55 ID:???
データを20万件作ってバルクインサートすればよろしいのでは?
633NAME IS NULL:2011/05/05(木) 20:33:54.84 ID:???
>>631
事前にINSERTが必要なのは異常。
634NAME IS NULL:2011/05/05(木) 22:31:52.16 ID:???
>>631
なぜ安心できるのか
635NAME IS NULL:2011/05/06(金) 00:48:08.50 ID:???
>>630
それは冗談とは言わんな。 嘘 と言うんだよ
636NAME IS NULL:2011/05/06(金) 01:08:12.78 ID:???
いずれにせよ、2chの書き込み「だけ」で判断するなと
637NAME IS NULL:2011/05/06(金) 04:56:52.24 ID:???
NAME IS NULLさん、ありがとうございます。
おかげで解決しました。
638NAME IS NULL:2011/05/06(金) 05:22:01.30 ID:???
うむ
639NAME IS NULL:2011/05/06(金) 09:01:11.00 ID:???
いいってことよ
640NAME IS NULL:2011/05/06(金) 09:12:07.18 ID:???
今後も精進してくれたまえ。
641NAME IS NULL:2011/05/06(金) 19:05:32.10 ID:5aOEnpcJ
1つのデータベースに、複数のストレージエンジンによる
テーブルを混在させるのは良くないのかな?
そういうことを書いたブログがあったんだけど…。

phpmyadminで見たら、innoDBのテーブルのレコード数が
マイナス?(「-3322」みたいな)で表示されてたりします。
642NAME IS NULL:2011/05/06(金) 19:11:54.74 ID:???
phpmyadminのバージョン上げろ
643NAME IS NULL:2011/05/06(金) 19:28:13.88 ID:???
>>642
上げてもかわらんだろ。
innodbはmyisamと違ってレコード数は実際に数えないとわからんから概算ってことだ。

そもそもphpmyadminでも、正しい数字ではありません、って注意書きある。
644NAME IS NULL:2011/05/06(金) 22:43:11.14 ID:5aOEnpcJ
>>643
なるほど、参考程度に見ておけってことですね。
645NAME IS NULL:2011/05/06(金) 23:17:11.44 ID:???
基本innoDBでfulltextキーはMyISAMだわ
646NAME IS NULL:2011/05/07(土) 12:22:24.32 ID:m1TpCaqb
mysqldumpslow とかその辺のツールを試したいんだけど、いろいろな解析を試してみるのに良いサンプル的なスロークエリログってどこかにない?
5.0 だから long_query_time = 0 も出来ないし、すぐに試せるログがあれば嬉しいんだけど・・・。
やっぱ 5.1 入れてテスト用 DB 作ってログ取得するしかないかな?
647NAME IS NULL:2011/05/07(土) 17:29:33.24 ID:???
>>646
スローなクエリをちょっと実行しちゃえば。

サブクエリとか
ストアドとか
文字列処理とか
648NAME IS NULL:2011/05/07(土) 17:29:57.68 ID:???
select sleep(10);
で、とりあえずスロークエリはすぐ出せる
649NAME IS NULL:2011/05/08(日) 12:40:39.09 ID:???
>>648が天才すぎてびっくりした。いやマジで。
なんつーか死にたくなってきたわ。
650NAME IS NULL:2011/05/08(日) 12:44:47.24 ID:???
こういう小ネタはいいな
俺も知らなかった
651NAME IS NULL:2011/05/08(日) 15:15:12.88 ID:???
スロークエリって何ですか
652NAME IS NULL:2011/05/08(日) 20:53:52.80 ID:???
スローなクエリにしてくれ
653NAME IS NULL:2011/05/09(月) 00:33:50.73 ID:WP+BCa3r
>>652 だめじゃん。
654NAME IS NULL:2011/05/09(月) 18:22:12.80 ID:ovU3C3FZ
ここで聞いていいのかわからんけど、SQLってのは常駐ソフトの一種で別のソフトからアクセスして使うものっていう解釈で合ってる?
655NAME IS NULL:2011/05/09(月) 18:44:24.01 ID:???
>>654
このスレでなら正解
656NAME IS NULL:2011/05/09(月) 18:53:41.08 ID:ovU3C3FZ
そうか、ありがとう
657NAME IS NULL:2011/05/09(月) 20:12:10.22 ID:???
>>654-656
ひでぇ会話w
658NAME IS NULL:2011/05/09(月) 20:35:46.26 ID:???
ちくしょう、つぼったww
電車の中で笑わせんな
659NAME IS NULL:2011/05/10(火) 16:39:08.30 ID:???
>>483
データノードを専用で3台 NoOfReplicas=3
SQLノードを専用で2台
マネジメントノードをしょぼいサーバーで専用で2台

データノードは3台ずつ追加
SQLノードは1台ずつ追加

SQL文は実行回数が多いクエリにjoin使わない。

でどうでしょう?

データノードが落ちてから復旧した場合、勝手に同期とって
マネージメントノードでOKとかでたら復旧成功とかでしょうか?
660NAME IS NULL:2011/05/10(火) 20:57:15.47 ID:???
なんだかんだ言って、全部一つのPCに納めちゃうのが楽
661NAME IS NULL:2011/05/11(水) 09:37:58.74 ID:???
create table tbl (id int(8), ts datetime);
alter table tbl add index (id, ts);

なテーブルで

select * from tbl where id in (1, 2) order ts;

ってするとfilesortが発生するけど、どうやったらソートにindex使ってくれますか?
662NAME IS NULL:2011/05/11(水) 12:01:43.54 ID:???
>>661
mysqlでは不可能
663NAME IS NULL:2011/05/11(水) 14:37:15.33 ID:???
以下のクエリを実行したらエラーが出来ました
どのように修正したらよいでしょうか?

CREATE TABLE `citest`.`testtbl` (

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`date` DATE NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`name` TEXT NOT NULL
) ENGINE = INNODB;

MySQLのメッセージ:

#1067 - Invalid default value for 'date'
664NAME IS NULL:2011/05/11(水) 14:56:22.33 ID:???
>>663
dateをhidukeに変更する
665NAME IS NULL:2011/05/11(水) 14:57:11.01 ID:???
>>663
DEFAULT CURRENT_TIMESTAMP を削除する
666NAME IS NULL:2011/05/11(水) 15:19:51.95 ID:???
ttp://uploader.sakura.ne.jp/src/up39463.jpg
CURRENT_TIMESTAMPを消したら確かにエラーは出なくなったのですが
挿入時の日時を自動的に入れたいのでCURRENT_TIMESTAMPはどうしても使いたいです
667NAME IS NULL:2011/05/11(水) 15:22:18.44 ID:???
型のdateって所をTIMESTAMPに変えたら出来ました
お騒がせしました
668NAME IS NULL:2011/05/11(水) 17:37:02.05 ID:TXivELb9
すみません
5.1を使っているのですが、cactiやmuninはmysql5.5に対応していますでしょうか?
669NAME IS NULL:2011/05/11(水) 17:56:17.80 ID:???
>>668
対応しています
670NAME IS NULL:2011/05/11(水) 19:13:40.97 ID:???
>>669
無責任なこと言ってんじゃねぇよ
お前が作ったのかよ
671NAME IS NULL:2011/05/11(水) 21:07:13.75 ID:???
ウザイからYahoo!知恵袋で質問してくれる?
672NAME IS NULL:2011/05/11(水) 23:15:04.12 ID:???
>>670
はい。
673NAME IS NULL:2011/05/12(木) 01:09:50.36 ID:???
>>671
Yahoo!知恵袋で質問したところ、スレ違いと言われてこのスレに誘導されました。
674NAME IS NULL:2011/05/12(木) 01:21:27.30 ID:???
ウソをつくな
675NAME IS NULL:2011/05/12(木) 01:24:33.32 ID:???
ここの人って、MariaDBとかPercona Serverとか試したりしてる?
676NAME IS NULL:2011/05/12(木) 02:14:16.77 ID:???
ウザイからYahoo!知恵袋で質問してくれる?
677NAME IS NULL:2011/05/12(木) 07:02:45.19 ID:lTT2AWNK
UPDATE するときに、ある特定のクエリで必ず
Duplicate entry 'hoge' for key 1 が出るのだけど、
hoge を SELECT しても結果はゼロ、見つからない。
ぐぐったら「テーブルが破損しているかも、REPAIR TABLEで直ることも」
と合ったが、リペアしても直らない。

特に重要なレコードでもないから問題は小さいけど、気になる。
対処方法はないですか?
ハードウェアの障害とかだろうか…。

該当列の構造は、varchar / utf8_bin
MySQLは5.0.41
678NAME IS NULL:2011/05/12(木) 07:30:45.78 ID:???
>>677
uodateのsqlをよく見直せ
679NAME IS NULL:2011/05/12(木) 07:58:56.81 ID:lTT2AWNK
ああ…バッチ処理中の重複がありえるというのを失念してた…。
正直すいませんでした。
680NAME IS NULL:2011/05/12(木) 11:44:48.39 ID:???
カスが
681NAME IS NULL:2011/05/12(木) 11:49:29.95 ID:???
ガスか
682NAME IS NULL:2011/05/12(木) 21:27:04.31 ID:???
カズが
683NAME IS NULL:2011/05/12(木) 23:04:10.76 ID:???
ガズが
684NAME IS NULL:2011/05/12(木) 23:27:01.27 ID:???
トゥーッス!
685NAME IS NULL:2011/05/12(木) 23:28:40.93 ID:qBNB3GBW
知恵袋とマルチなんですが、文字制限でかけなくてこちらでお願いします。

商品テーブル
ユニーク
商品ID, 商品名, 値段, 仕入れ日, 在庫
001, りんご, 100, 2011/5/11, 10
002, なす, 100, 2011/5/11, 10
003, みかん, 100, 2011/5/11, 10
004, にく, 100, 2011/5/11, 10
005, バナナ, 100, 2011/5/11, 10

商品産地テーブル
産地ID, 商品ID
青森,001
青森,002
岩手,001
岩手,003
香川,001
香川,004
宮崎,002
宮崎,005

商品問屋テーブル
問屋ID, 商品ID
丸紅,001
丸紅,002
丸紅,003
伊藤忠,001
伊藤忠,002
伊藤忠,004
伊藤忠,005

商品種類テーブル
種類ID, 商品ID
冷凍,004
生,001
生,002
生,003
生,005

商品サイズテーブル
サイズID, 商品ID
大,001
大,002
大,003
大,004
中,001
中,005
小,005

みたいなのがあったとき、「青森」かつ「丸紅」かつ「生」かつ「大」を商品テーブルから抜き出すにはどうすればよいですか?
686NAME IS NULL:2011/05/12(木) 23:37:37.74 ID:???
>>685
俺なら適切なクエリーでSELECTする
687685:2011/05/12(木) 23:41:53.46 ID:???
>>686
適切なクエリェ

SELECT 商品.*
FROM 商品産地
INNER JOIN 商品問屋 ON 商品産地.商品ID = 商品問屋.商品ID
INNER JOIN 商品種類 ON 商品問屋.商品ID = 商品種類.商品ID
INNER JOIN 商品サイズ ON 商品種類.商品ID = 商品サイズ.商品ID
LEFT OUTER JOIN 商品 ON 商品サイズ.商品ID = 商品.商品ID
WHERE 商品産地.産地ID = 青森
AND 商品種類.種類ID = 生
AND 商品問屋.問屋ID = 丸紅
AND 商品サイズ.サイズID = 大

みたいなの考えましたが、1つしかレコードが帰ってきません
688685:2011/05/12(木) 23:55:12.34 ID:???
ごめんなさい、出力するphpが間違ってました

ああ・・・
689NAME IS NULL:2011/05/13(金) 00:42:54.51 ID:???
解決したわけね?
690685:2011/05/13(金) 01:02:12.58 ID:???
>>689
解決しました(´∀`)9 ビシッ!
691NAME IS NULL:2011/05/13(金) 01:10:54.73 ID:???
ザコを呼び込んだ奴、責任取れ
相手にするからこうなる
692NAME IS NULL:2011/05/13(金) 02:11:30.40 ID:???
>>691
鏡を見てから来いや
693NAME IS NULL:2011/05/13(金) 02:16:20.84 ID:???
テーブル・カラム名に全角かぁ。
694NAME IS NULL:2011/05/13(金) 03:48:38.16 ID:???
最近は全角が主流なんですが。
金融機関などの大規模DBでも殆どが全角ですよ。
695NAME IS NULL:2011/05/13(金) 04:31:46.97 ID:???
>>691
森へお帰り
696NAME IS NULL:2011/05/13(金) 08:43:49.58 ID:???
全角カラムって一見分かりやすそうだけど,似た漢字があったりするとかえって混乱するんだよね.
697NAME IS NULL:2011/05/13(金) 09:07:25.16 ID:???
>>694
まじで!?
698NAME IS NULL:2011/05/13(金) 09:21:49.56 ID:???
以前は半角カタカナが主流でしたが、全角漢字が利用できるようになって以来、
出来るだけ漢字を使わないとクライアントの偉いさんが納得してくれません。
699NAME IS NULL:2011/05/13(金) 10:18:09.62 ID:???
>>697
信じられないだろうが本当。
使ってみるとこれが意外に便利だったりする。
700NAME IS NULL:2011/05/13(金) 10:54:12.53 ID:???
関係無いけどエクセルのファイル名とかに漢字使う?
701NAME IS NULL:2011/05/13(金) 10:57:01.11 ID:???
>>700
それは普通に使うだろ
702NAME IS NULL:2011/05/13(金) 11:08:33.08 ID:Z7KNlo4p
SQLServerだったけど、とある証券システムでDBからテーブルからカラムから
全て日本語だったよ
703NAME IS NULL:2011/05/13(金) 15:39:56.16 ID:AYV0ieN1
全角をつかって不具合が出たりはしないものなのでしょうか?

もう今は全角が普通なのかな。

いちいち日本語の単語から英語にするのに
頭使ってるのが馬鹿らしくなってきますね。
704NAME IS NULL:2011/05/13(金) 16:05:03.23 ID:???
>>703
最初に文字コードを決めてそれなりにテストを念入りにおこなえば
あとは特にトラブルはないな。
ただ記号文字、特に括弧とか〜系の文字は必ず避けてる。
705NAME IS NULL:2011/05/13(金) 17:33:12.41 ID:qBSqB9ZR
centos5でmysql 5.1.52 を使用しています。
Mysqlが起動しなくなりました。
ログを見たところ、
110513 17:30:17 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
110513 17:30:17 [ERROR] Can't start server: can't create PID file: No space left on device
110513 17:30:17 mysqld_safe Number of processes running now: 0
110513 17:30:17 mysqld_safe mysqld restarted
とでました。
/var/run/mysqld/をlsで見たらmysqld.pidが出現したり消えたりしています。

ps aux | grep mysqld でプロセスを見ると
mysql 6857 9.0 0.4 82892 13136 pts/1 Rl 17:31 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --federated --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 6865 0.0 0.0 5088 748 pts/2 R+ 17:32 0:00 grep mysqld
root 20872 17.5 0.0 7340 2776 pts/1 S 17:22 1:35 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --federated --basedir=/usr --user=mysql
とでて、起動してないはずのmysqlが何故か起動しているような感じです。

これはどうしたら対処できるんでしょうか?
よろしくお願いします。
706NAME IS NULL:2011/05/13(金) 17:55:22.76 ID:???
>>705
ハードディスクがいっぱいだな。
エロ画像を放流してスペースを空けるんだ
707NAME IS NULL:2011/05/14(土) 01:31:15.61 ID:???
>>706
ありがとうございます。解決しました。
708NAME IS NULL:2011/05/14(土) 03:40:44.58 ID:???
>>706
>>707は偽者です。
エロ画像は削除してみましたが、どうやらエロ動画がディスク容量を圧迫しているようです。
でもこれを削除してしますと、またMXで入手するのは大変だし、どうしたらよいでしょうか。
709NAME IS NULL:2011/05/14(土) 17:27:16.28 ID:???
>>706
>>708 も偽物です。
本当に解決しました。エロ画像45GBとエロ動画280GB消しました。
今は記憶だけで抜けるので大丈夫です。
ありがとうございました。
710NAME IS NULL:2011/05/15(日) 00:27:05.26 ID:???
時系列で株価の終値のデータを持っています
前営業日の終値と比較してその変化率を出したいと思っています

やり方、色いろあるとおもうのですが、どうやるのがスマートですかね?
711NAME IS NULL:2011/05/15(日) 00:38:48.83 ID:???
正確にいうと、変化率を出して、それをテーブルに戻そうと思ってます

土日や、終値がない日が存在したりすることを考えると、
どうやったら効率がいいのか。。。
712NAME IS NULL:2011/05/15(日) 01:02:39.29 ID:???
営業日テーブルというのがまず必要かな。前の営業日を
SELECT max(date) FROM businessday where date < :today;
という感じで取る
713NAME IS NULL:2011/05/15(日) 09:51:05.98 ID:???
そういう感じですることにします

変数を宣言しようと思ったらお壊れて
DECLARE next_day date;
なにがいかんのやろ
714NAME IS NULL:2011/05/15(日) 10:59:10.79 ID:???
まさか、next_dayが予約語だとは
715NAME IS NULL:2011/05/15(日) 12:21:51.19 ID:???
WHILE @n_day <= '2010-03-31' DO

これって間違ってる?
716NAME IS NULL:2011/05/16(月) 00:12:01.90 ID:???
stored procedureで以下の文章が使えませんでした。

SELECT aaa INTO bbb FROM ccc;

cccがユーザ変数だったのですが、ストアドプロシージャでは
テーブル名にユーザ変数が使えないんですか?
717NAME IS NULL:2011/05/16(月) 14:35:58.77 ID:???
初心者なんですが、例えば
idが3の列のデータを全部削除した場合、id 4をid 3につめるという方法はあるのでしょうか?
718NAME IS NULL:2011/05/16(月) 14:38:43.33 ID:???
>>717
本名の他に、芸名を付ければいいんじゃないの?
719NAME IS NULL:2011/05/16(月) 14:41:59.55 ID:???
deleteしたあとupdateでもしてろよ
720NAME IS NULL:2011/05/16(月) 15:11:15.60 ID:???
>>719
まじでそれでいけるの?
721NAME IS NULL:2011/05/16(月) 16:26:38.63 ID:???
>>720
ALTER TABLE table AUTO_INCREMENT=3;
722NAME IS NULL:2011/05/16(月) 16:38:43.92 ID:???
>>721は釣りで良いんだよな…
723NAME IS NULL:2011/05/16(月) 18:03:32.11 ID:???
はぁ?
724NAME IS NULL:2011/05/16(月) 18:16:11.95 ID:???
>>720
馬鹿ならしね
725NAME IS NULL:2011/05/16(月) 21:14:29.69 ID:???
4以上をすべて -1 すればいいだけじゃね。
ちょっと考えれば思いつくと思んだが。
プログラムってアイデア勝負だな。
726NAME IS NULL:2011/05/16(月) 21:31:05.31 ID:???
MySQLはそこでorder byとかやらないとキー重複でエラーになるんだっけ?
727NAME IS NULL:2011/05/16(月) 22:10:11.06 ID:???
>>726
ならぬ
728NAME IS NULL:2011/05/17(火) 05:11:06.54 ID:???
プライマリキーをオートインクリメントで設定すると
どんどん増えていくじゃないですか。
だからidをつめた方がいいのかなと思ったんであります。

でも調べたら1日100万レコードの追加してもエラーがでるまで
12年くらいかかるっぽいんですね。だから気にすることはない。

この認識であってますか?
729NAME IS NULL:2011/05/17(火) 05:27:18.02 ID:???
>>725 馬鹿?
AUTO_INCREMENT付ければ勝手に連番付与してくれる
730NAME IS NULL:2011/05/17(火) 05:31:44.38 ID:???
>>728
RDBなんだから普通はIDが他のtableから参照されたりするだろ。
だから特定のtableのIDを詰めるようなことは行わない。
そもそもレコードを削除してしまうと情報が消えてしまうので
削除フラグを立ててレコードは残しておくことが多い。
731NAME IS NULL:2011/05/17(火) 05:53:12.88 ID:???
>>728
レコード削除でオートインクリメントカラムの数字を詰めたい・再利用したい ってのは
独学初心者の典型的な発想。
詰める必要はないし、データ管理という観点でも「詰めちゃいかん」のだよ

732NAME IS NULL:2011/05/17(火) 06:00:15.54 ID:???
>>730-731
なるほど
まあDBは初心者なわけですがw

ではチャットみたいなやりとりもDBでは消さないで保存するシステムになってるのですかね?
733NAME IS NULL:2011/05/17(火) 06:07:18.29 ID:???
チャットをDBに保存する意味があるかどうかは別として、基本的には削除する必要はないだろ
何かあったときのための証拠として残しておけ!
734728:2011/05/17(火) 06:15:47.52 ID:???
>>733
>チャットをDBに保存する意味があるかどうかは

まさにこの部分なんですよ
何かしら一時的には保存してるわけでそれがDBに保存する場合、古いのは消していかないと
容量がどんどん増えていくんじゃないのかということで上記の質問をしたわけです。
735NAME IS NULL:2011/05/17(火) 08:46:52.32 ID:???
>>729
おまえが元コメ読んでない馬鹿だろ
736NAME IS NULL:2011/05/17(火) 10:05:27.53 ID:???
>>734
そういうのを必要に応じて消すというのはよくあるが
IDを振り直すというのはありえない
というのが結論
737NAME IS NULL:2011/05/17(火) 16:05:34.67 ID:???
>>728
どうしても空き番を再利用したいなら
オライリーのMySQL Cookbookのvol2に載ってるから
買って読むといいよ。
738NAME IS NULL:2011/05/17(火) 23:16:40.04 ID:???
>>735
>プログラムってアイデア勝負だな

馬鹿丸出しの文章恥ずかしくないの?
739NAME IS NULL:2011/05/18(水) 01:04:36.49 ID:???
>>738
一日遅れで随分離れたレスにツッコむお前が馬鹿丸出しだぞ。
740NAME IS NULL:2011/05/18(水) 07:24:14.79 ID:???
>>739
何て回答するか一日悩んだのだから仕方あるまい
741NAME IS NULL:2011/05/18(水) 13:28:42.56 ID:???
twitterじゃあるまいし昨日だろうが去年だろうがいいだろボケどもが
742NAME IS NULL:2011/05/18(水) 17:30:29.29 ID:???
そんなに長く考えてたらこのスレ終了しちゃうよ
743NAME IS NULL:2011/05/18(水) 17:58:39.48 ID:NDLQlcle
複数行をまとめてinsertするinsert文で、プライマリキーが被っているものはスルーして
かぶっていないもののみinsertする方法はありますか?

insert into table values (), (), ();
という形のSQLです。
744NAME IS NULL:2011/05/18(水) 18:23:05.91 ID:???
745NAME IS NULL:2011/05/18(水) 20:36:09.15 ID:???
>>743
いちいち人に聞かずに少しは自分で調べろ
746NAME IS NULL:2011/05/18(水) 22:43:57.23 ID:???
>>745
ここで調べてるんだよ。何か悪いか?

って、本気で言われたことがある。
747NAME IS NULL:2011/05/18(水) 22:49:29.51 ID:???
自分で調べろと言って何か悪いか?

って、本気で言われたことがある。
748NAME IS NULL:2011/05/19(木) 00:30:27.10 ID:???
同じ値を集計して多い順に並べる、よくある感じのsqlだけど、
using tempとfilesortがどうしても掛かる。
致命的に遅いわけじゃなく許容できそうな遅さだけど、
これはどうしようもない?

example)
select hoge,count(hoge) as cnt
from tbl
group by hoge
order by cnt desc
limit 10
749NAME IS NULL:2011/05/19(木) 00:41:56.75 ID:???
バカを育てる事に意味があると思っている奴がいるんだ
そんなバカ担当にお任せしようじゃないの
750NAME IS NULL:2011/05/19(木) 01:00:55.43 ID:???
>>748
質問の意味が理解できません
751NAME IS NULL:2011/05/19(木) 01:10:06.72 ID:???
>>748
full scanがかかるのはしょうがないとして、hogeのカーディナリティが
高いのに対してsort_buffer_sizeが足りてないとか?
752748:2011/05/19(木) 03:08:45.76 ID:???
>>751
あー、sort_bufferか。ちょっと増やしてみる。
order by のソート速度が上がるかもしれない。
ありがとう。
753NAME IS NULL:2011/05/19(木) 07:43:42.84 ID:???
>>751-752
あなた方のやり取りの意味が理解できません
754NAME IS NULL:2011/05/19(木) 08:32:09.16 ID:???
大丈夫だ 問題ない
755NAME IS NULL:2011/05/19(木) 11:34:19.86 ID:???
最近mysqlを習い始めた新参です
お知恵を拝借させていただくべく質問させていただきます

ID、名前(日本語)、歳が登録されてるテーブルにselect文にて検索を行うべく
mysql> select id,name,age from tsumiki_tbl where name like '%えらちょんぺ%' order by id limit 0, 10;
とうつと、idでソートされたデータが10件表示されると思いますが、これを
mysql> select id,name,age from tsumiki_tbl where name like '%a%' order by id limit 0, 10;
とうつとすべて条件が無視されすべて表示されてしまいます
いろいろ調べては見たのですが、これといった情報がわからず手を拱いております
お知恵を貸していただければ幸いです。
756NAME IS NULL:2011/05/19(木) 16:57:41.33 ID:???
「手を拱く」なんて難しい言葉を知っていますね!
757NAME IS NULL:2011/05/19(木) 18:11:59.42 ID:???
こんな漢字だとは知らなかった。
758NAME IS NULL:2011/05/19(木) 19:02:55.32 ID:???
書けなくても漢字変換してりゃ出てくる
それだけの事
759NAME IS NULL:2011/05/19(木) 20:25:21.87 ID:???
「漢字」じゃなくて「言葉(単語)」を知っていることに驚きました!
760NAME IS NULL:2011/05/19(木) 20:32:43.64 ID:???
>>755
文字コードがlatin1とかになってんじゃないの?
761NAME IS NULL:2011/05/19(木) 21:44:34.90 ID:???
文字コードがえらちょんぺじゃないか?とえスパ(ry
762NAME IS NULL:2011/05/20(金) 04:44:54.47 ID:???
>>760
レスありがとうございます
文字コードはすべてutf8で統一しております
たとえば%b%にすると妥当な検索結果を表示しますが、aという文字に対してだけselect以下のコマンドが
無視されるようです
>>756
お褒めいただき恐縮ですm(__)m
763NAME IS NULL:2011/05/20(金) 09:57:20.15 ID:???
>>762
>文字コードはすべてutf8で統一しております
show variables like 'char%';
で確認しましたか?
PHP等からアクセスするなら、PHPから上記SQLを発行して確認してね。

ところで「select以下のコマンドが無視される」ってどういう意味だろう。
764NAME IS NULL:2011/05/20(金) 11:47:41.57 ID:???
>>763
レスありがとうございます。
文字コードは確認しております、以下が結果です
mysql> show variables like 'char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.12 sec)

理由はわかりませんが、mysql> select id,name,age from tsumiki_tbl where name like '%えらちょんぺ%' order by id limit 0, 10;と入力すると10件を表示するとおもうのですが
%えらちょんぺ%を%a%にすると11件目以降が表示されてしまいます、ゆえにselect以下のコマンドが認識できなくなった?のかは不明ですがそういう状況に陥りました。
765NAME IS NULL:2011/05/20(金) 16:27:35.12 ID:???
なんかよくわからんのでは外してたらスマソですが、
もしかして、11件目以降ってのは

select id,name,age from tsumiki_tbl where name like '%a%' order by id limit 0, 10

id name age
11 abc 10
12 asdf 55
13 qaz 44
14 piza 33
..
..

って話?
766 忍法帖【Lv=7,xxxP】 :2011/05/20(金) 16:40:26.12 ID:???
limit 0, 10
が機能していないということでは。
767NAME IS NULL:2011/05/20(金) 16:53:33.71 ID:???
プログラム側で
%a% あたりが特殊文字扱いされてるとかないのか?
768NAME IS NULL:2011/05/20(金) 17:37:40.37 ID:???
エスパー初心者ですが、sprintf が噛んでない?
'%%a%%' とやるとどうなりますか?
769NAME IS NULL:2011/05/20(金) 17:50:56.63 ID:???
DBに保存するデータを暗号化したいので、 AES_ENCRYPT使おうとしてるんだけど、
これって結局ソース読まれたら意味ないですよね。
平文で読めなくなるという気休め程度か…。
公開鍵暗号とかするの面倒そうだしなー…。
770NAME IS NULL:2011/05/20(金) 17:58:53.18 ID:???
>>769
なんで意味無いの?
771NAME IS NULL:2011/05/20(金) 22:08:38.55 ID:???
>>768
>%えらちょんぺ%を%a%にすると11件目以降が表示されてしまいます

他の人も書いてるけど、limit 0,10 が効いてないって意味?まぁそんなことがあるとは思えないけど。
結果の件数は何件表示されたの?10件以内なら正常な動作だと思うけどね
772NAME IS NULL:2011/05/21(土) 01:17:10.05 ID:???
>>765
普通、

select id,name,age from tsumiki_tbl where name like '%ザク%' order by id limit 0, 10
id name age
1 プロトタイプザク 10
2 旧ザク 55
3 ザクII 44
4 量産型ザクII 33
5 陸戦型ザクII 22
6 デザートザク 11
7 ザクキャノン 22
8 ザクマリン 33
9 高機動型ザクII 44
10 作業用ザクII 55

こう表示されて11件目以降は表示されてないはずですよね
ただ、aにたいして同じことをすると

select id,name,age from tsumiki_tbl where name like '%a%' order by id limit 0, 10
id name age
select id,name,age from tsumiki_tbl where name like '%a%' order by id limit 0, 10
id name age
1 プロトタイプザク 10
2 グフ 11
3 旧ザク 55
4 ザクII 44
5 プロトタイプドム 12
6 量産型ザクII 33
7 陸戦型ザクII 22
8 デザートザク 11
9 ゲルググM 20
10 ザクキャノン 22
11 ザクマリン 33
12 高機動型ザクII 44
13 ガルバルディα 40
14 作業用ザクII 55
.
.
.

とテーブルの上から全部取得してしまいます
773NAME IS NULL:2011/05/21(土) 01:20:25.78 ID:???
>>766
そうです・・・
>>767
mysql自体にそういう文字があるのかとおもい質問させていただきました
>>768>>771
a意外ならヒットする件数が10以上でも10件だけ表示してくれます
aだとヒットするしないにかかわらずテーブル全体を表示してしまいます・・・
774NAME IS NULL:2011/05/21(土) 06:26:21.37 ID:???
>>773
Mysql付属のclientから接続して同じクエリやっても結果一緒?
775NAME IS NULL:2011/05/21(土) 09:25:16.70 ID:???
>>772
ザク大好きなんやね
776NAME IS NULL:2011/05/21(土) 13:36:00.89 ID:???
ザクが大好きです。でもジムはもっと大好きです。
777NAME IS NULL:2011/05/21(土) 15:11:18.07 ID:???
>>773
repair table tsumiki_tbl;
778NAME IS NULL:2011/05/21(土) 15:19:51.92 ID:???
>>773
optimize table tsumiki_tbl;
779NAME IS NULL:2011/05/21(土) 15:20:23.60 ID:???
>>773
alter table tsumiki_tbl;
780NAME IS NULL:2011/05/21(土) 15:20:41.58 ID:???
>>773
delete table tsumiki_tbl;
781NAME IS NULL:2011/05/21(土) 19:26:01.29 ID:???
>>773
curieit table tsumiki_tbl;
782NAME IS NULL:2011/05/21(土) 19:26:46.31 ID:???
>>773
updeit table tsumiki_tbl;
783NAME IS NULL:2011/05/21(土) 20:31:47.54 ID:???
>>773
deleet table tsumiki_tbl;
784NAME IS NULL:2011/05/21(土) 21:39:52.79 ID:???
本当に limit 節がサーバーに届いてるのか?
785NAME IS NULL:2011/05/21(土) 22:20:24.68 ID:???
× limit 節
△ ソーラン節
○ かつお節
786NAME IS NULL:2011/05/22(日) 11:11:55.30 ID:???
llinuxのmysqlで、outfileを使って/tmpに出力したら、 
ファイルのオーナーとグループが両方mysqlで,rw-rw-rwなんだけど、
mysqlを操作したユーザから消せなかった。

ファイルがあると上書きしないみたいだし、
ファイルも消せなくて困ってます。

デフォルトのパーミッションの変更方法か消し方を教えて。
linuxのアカウントは、一つしか使えないです。
787NAME IS NULL:2011/05/22(日) 12:01:27.31 ID:???
innodbでinnodb_file_per_tableを設定して
テーブルファイル .idb を分けた場合、
MyISAMと同じデータディレクトリdatadirに保存されるのだけど、
これを別のディレクトリに保存する方法はない?
innodb_data_home_dirは設定済だけど、
ibdata1/ib_logfile0/ib_logfile1の3ファイルしか入ってくれない。

できればMyISAMとinnodbのディスクを分けたい。


>>786
rootにはなれないの?
rm -rf file.dmp

mvしてホームディレクトリに移動すれば見れる・削除できることも。
mv /tmp/file.dmp /home/www/file.dmp
788NAME IS NULL:2011/05/22(日) 17:39:00.48 ID:???
テーブルAAA フィールドaaa
テーブルBBB フィールドbbb
select〜で作るフィールドccc

SELECT BBBと結合されていたらAAA.aaa+BBB.bbb 結合されていなかったらAAA.aaa AS ccc from AAA〜
みたいなことってできないですかね?
CASE WHEN BBB.bbb IS NULL〜ってやってもBBBがないってエラーになる。
789NAME IS NULL:2011/05/22(日) 18:30:14.79 ID:???
PHPMyAdminでエクスポートできる容量の制限ってあるのでしょうか
約100MBのサイズをエクスポートしようとしてるのですが
500 内部サーバー エラーがでます
790NAME IS NULL:2011/05/22(日) 19:21:20.97 ID:???
>>789
時間かかってるんで殺してエラーになってるから
時間かかってもいいようにphp.iniとかを設定する
791NAME IS NULL:2011/05/22(日) 19:24:19.52 ID:???
>>787
[mysqld]
datadir=〜
の部分を好きなところに変更したら?
792NAME IS NULL:2011/05/23(月) 16:53:15.99 ID:???
>>790
契約してる鯖ではphp.iniの設定を変えることができそうもないので困っています。
エクスポート用のbigdump.phpのようなものがあればいいんですが・・・
793NAME IS NULL:2011/05/23(月) 21:15:50.34 ID:???
>>792
ならphpmyadminのソースを自分で書き換えればいいだろ。
もっと頭使えよ。
794NAME IS NULL:2011/05/24(火) 09:03:25.84 ID:V+PJwoKM
質問させてください。mixiであるような「いいね」の管理って、どうすべきなんでしょうか
日記/写真/つぶやきetc.. と、「いいね」のついてる機能ごとにテーブルを作るのか、
一つのテーブルにまとめて登録するのかどちらが良いのでしょうか?

前者なら、t_nice_diary(id|diary_id|diary_owner_id|nice_user_id|date)
 ※diary_idは日記のID、diary_owner_idは日記書いた人のID、nice_user_idは「いいね」した人のID
後者なら、t_nice(id|func_type|func_id|func_owner_id|nice_user_id|date)
 ※func_typeは機能(diaryなど)、func_idは機能のID、func_owner_idは機能のユーザID、他同じ
こんなイメージなんですが、アプリケーションの機能として、
「機能ごとの「いいね」を貰ってる数ランキング」はもちろん、「ユーザごとの「いいね」を貰ってる総数ランキング」も
作りたいと思っています。
前者だと「ユーザごと…」の処理のときjoinなどが発生して負荷なのかという気になり
後者だとテーブルの行数が極端に増えて面倒なことにならないか気になりなります。
今思いついたのが
ユーザのイイネ総数専用テーブルとして t_users_nice_num(id|user_id|nice_num)を作って、
「イイネ」されるごとにトランザクションでnice_numを+1でupdateするのも良いかもしれませんが…

どういうやり方が良いと、理由つきで教えてもらえると嬉しいです。
質問長くてすみません
795NAME IS NULL:2011/05/24(火) 11:04:59.58 ID:???
>>794
いいね!ごとにIDを振って個別管理
796NAME IS NULL:2011/05/24(火) 13:55:32.24 ID:V+PJwoKM
>>795
ありがとうございます。個別管理とは一つのテーブルでですか?
それだと、上で書いたうちの2番目のやり方で良いんでしょうか?
797NAME IS NULL:2011/05/24(火) 16:11:05.68 ID:???
>>794
負荷を考慮するなら情報は重複するが別テーブルで管理
798NAME IS NULL:2011/05/24(火) 17:42:04.49 ID:???
>>793
phpmyadminは初めから鯖に用意されているものなので書き換えできません。
799NAME IS NULL:2011/05/24(火) 18:36:13.34 ID:???
>>798
それどこの鯖?
800NAME IS NULL:2011/05/24(火) 21:00:26.55 ID:???
共有レン鯖ってphpmyadminは最初から入ってることが多いと思うぞ
801NAME IS NULL:2011/05/24(火) 21:13:14.24 ID:???
>>798
じゃ、自分でDLして、自分のパーティション内にアップすればいいだけじゃん。
802NAME IS NULL:2011/05/24(火) 21:32:30.26 ID:???
DLとかパーティションとかどういう意味だよw
専門用語知ってますって自慢したいのか?www
803NAME IS NULL:2011/05/24(火) 21:47:18.44 ID:???
そもそも話が噛み合ってないな。
804NAME IS NULL:2011/05/24(火) 22:12:42.75 ID:???
>>801
その「自分でDLして」のやり方を聞いてるんだとおもうぞw
805NAME IS NULL:2011/05/24(火) 22:42:00.77 ID:???
DL=ディーゼル機関車
806NAME IS NULL:2011/05/25(水) 00:32:04.32 ID:???
>>802
自分でphpmyadminをダウンロードして、レンサバの自分のパーミッション管理下にアップロードしていじろ、ってことだ。

すまんな、iPhoneからなんで、変な変換単語のまま投稿しちまった。
807NAME IS NULL:2011/05/25(水) 00:37:49.50 ID:???
tp://www.phpmyadmin.net/home_page/index.php
ここからソース落として設定やらエクスポートの制限時間やら書き換えて、鯖にアップしてdumpしろってこと。
808NAME IS NULL:2011/05/25(水) 01:20:01.47 ID:???
>>806
iPhoneだと変な変換が当たり前だと言いたいのか
iPhoneを使っていることを自慢したいのか
809NAME IS NULL:2011/05/25(水) 01:21:55.41 ID:???
>>807
tp://www.phpmyadmin.net/home_page/index.php
このURLをブラウザに貼り付けましたがWeb ページ表示不可と出ました。
810NAME IS NULL:2011/05/25(水) 05:20:53.25 ID:???
>>808
いちいちダルいとこつっこんでくるなぁ。
いまどきiPhoneが自慢になるとでも?

>>809
URLなんだし、普通httpから始まるよな?
811NAME IS NULL:2011/05/25(水) 11:31:44.68 ID:???
>>810
そこまでのあほじゃないだろ。それじゃアホを通り越して池沼レベルだ。
馬鹿にしすぎだぜ。
812NAME IS NULL:2011/05/25(水) 12:58:59.89 ID:???
phpmyadminなら100メガ程度ならそれでもできそうだが、
DBの容量がギガ超えた場合不可能なんじゃないの
813NAME IS NULL:2011/05/25(水) 13:55:47.54 ID:???
>>810
アクセスできました。httpのhtを書き忘れたんですね。
次はソースを落とす?
ソースって何でしょうか。どこに落とすのですか。
814NAME IS NULL:2011/05/25(水) 14:49:31.60 ID:???
>>812
どっかの借り物サーバでrmysqlがインストールされてて
phpmyadminが設定変更不可でootが取れないってところ
でしょ? DBの容量にギガも許されてないと思うよ。たぶん
815NAME IS NULL:2011/05/25(水) 15:09:01.13 ID:???
DBの容量の制限なんて聞いたことない
ふつう契約している鯖の容量内なら使える
816NAME IS NULL:2011/05/25(水) 15:37:17.09 ID:???
さくらみたいにDBは別鯖の場合がある
ユーザー容量制限とは別扱いだったような
817NAME IS NULL:2011/05/25(水) 15:45:29.21 ID:???
要するにphpmyadminを使う方法以外は
わからないってことだよなw
818NAME IS NULL:2011/05/25(水) 18:07:48.89 ID:???
いやその方法すらわからないw
819NAME IS NULL:2011/05/25(水) 18:50:54.92 ID:???
言い方は厳しいが、よくそれくらいの知識でレンサバ借りたな、と。
仕事上押し付けられたなら同情するが、
も少しローカルでいろいろ試してからの方がいいんじゃないか?

それか、プログラムも鯖管理もしないけど、ただMySQLのデータだけダウンロードする、ってことなのか?目的は知らんけど。
そうであるなら、一度レンサバ業者に相談してみては?
金払う、言うたらやってくれるんじゃないか?
俺ならやるw
820NAME IS NULL:2011/05/25(水) 19:07:34.98 ID:???
知識があるんなら教えてやればwww
821NAME IS NULL:2011/05/25(水) 21:44:37.88 ID:???
地図読めて道を知ってても、今向いてる方向と場所を教えてもらわんと、ナビゲート出来ない
822NAME IS NULL:2011/05/25(水) 22:38:49.22 ID:???
>>814

XREA+ で、ファイル(物理)サイズが1GB超えるくらいになったことはあった。
インポート/エクスポートでphpmyadminは使い物にならなかったよ。
安いレンサバでやることじゃあなかった…
823NAME IS NULL:2011/05/25(水) 23:50:11.26 ID:???
サーバーでどれだけ制限されてるかはわからんが、
phpなんかのシェル関数で直接mysqldump叩いてサーバー上にdumpファイル作ってダウンロードするのが一番楽そう。
今はもう安いしVPS使うのがいいな。
824NAME IS NULL:2011/05/26(木) 07:48:18.26 ID:???
>>821
phpmyadminを使わずに1GB超えるくらいのDBをエクスポートする方法
インポートはbigdump.phpでできるから
825NAME IS NULL:2011/05/26(木) 14:58:44.71 ID:???
>>824
mysqldumpでよくね?
それか自分でちょっとずつ吐く
826NAME IS NULL:2011/05/26(木) 15:50:04.77 ID:???
>>825
ShellもSSHも使用不可
827NAME IS NULL:2011/05/26(木) 16:20:32.75 ID:???
>>826
じゃあphpmyadminではスキーマだけ落として
残りは自分でちょっとずつ吐けばいいんじゃね?
タイムアウトになんない範囲で。
828NAME IS NULL:2011/05/26(木) 19:21:18.33 ID:???
>>821
カーナビの話はこの際関係ないと思います
829NAME IS NULL:2011/05/26(木) 19:22:32.78 ID:???
VPSよかVPNがお勧め。
830NAME IS NULL:2011/05/26(木) 21:46:29.50 ID:???
VPNよかVCNがお勧め。
831NAME IS NULL:2011/05/26(木) 23:26:20.25 ID:???
vipに逝け
832NAME IS NULL:2011/05/27(金) 00:28:50.04 ID:???
vipよかhipがお勧め。
833NAME IS NULL:2011/05/27(金) 02:42:11.42 ID:???
hipよかnipがお勧め。
834NAME IS NULL:2011/05/27(金) 19:51:46.86 ID:???
nipよかnicがお勧め。
835NAME IS NULL:2011/05/27(金) 21:20:10.79 ID:???
nicよかciaがお勧め。
836NAME IS NULL:2011/05/27(金) 23:32:55.51 ID:???
ciaよかgepがお勧め。
837NAME IS NULL:2011/05/28(土) 11:34:32.94 ID:???
一つのテーブルに収められるデータ量の上限は4G程度とのことですが、
これって画像データなどの場合はすぐに限界が来てしまいそうです。
大規模サービスを運用している場合、データ量が限界に近づくたびにテーブルを分割するなどして対応しているのでしょうか?
838NAME IS NULL:2011/05/28(土) 12:45:51.48 ID:???
4GB以上入るよ
それどこ情報よ
839NAME IS NULL:2011/05/28(土) 12:46:55.85 ID:???
>>837
データベースには画像のリンクを保存して
画像は他のサーバーのフォルダに保存とかでは
840NAME IS NULL:2011/05/28(土) 14:57:49.72 ID:???
841NAME IS NULL:2011/05/28(土) 15:42:34.93 ID:???
CentOS 5.6 に用意されてるパッケージ(5.0.77)を yum install mysql-server でインスコしたんですが、
プロセスを見ると mysqld はちゃんと起動してるのにデータベースに接続が出来ずに困っています。
環境としてはインスコ直後の状態で、サンプル・データベースがあるはず(実際 /var/lib/mysql にある)で、
それらには接続できないとおかしいと思うんですが、
$ mysql -h localhost -u root

mysql> use mysql;
としても
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
となって見せてくれません。アホな質問をしているという自覚はあるんですが、
どうやったら繋げるのかワカランで困っています。ここ読めボケ!とか、基本はこうやろ!とか、
何でもいいので取っ掛かりを教えて下さい。パスワードの設定とかもどうすればいいのやら。。。
842NAME IS NULL:2011/05/28(土) 15:45:14.16 ID:???
>>837
4Gも入らない。上限は2Gだよ。
843NAME IS NULL:2011/05/28(土) 16:12:48.88 ID:???
>>842
ええ?2Gも入りますか?
以前800MBでエラーになったことあるんですが。
844NAME IS NULL:2011/05/28(土) 16:15:05.31 ID:???
もう一回作りなおしてみては?
/etc/init.d/mysqld stop
mv /var/lib/mysql /var/lib/mysql.org
/etc/init.d/mysqld start
845NAME IS NULL:2011/05/28(土) 16:28:20.73 ID:???
ストレージエンジンによるんじゃね
MyISAM?InnoDB?
OSのファイルシステムによるんじゃね
Linux ext3? FeeBSD zfs? Windows ntfs?
846NAME IS NULL:2011/05/28(土) 17:26:36.52 ID:???
ファイルサイズはOS(ファイルシステム)が扱える最大サイズが限度だろ。
別にMySQLに上限があるわけではないな。
847NAME IS NULL:2011/05/28(土) 17:54:00.63 ID:???
趣味サイトならともかく仕事でやるなら画像はDBに入れておかないと怖すぎるなぁ
バックアップとか特に。
848NAME IS NULL:2011/05/28(土) 18:00:06.66 ID:???
849NAME IS NULL:2011/05/28(土) 20:56:10.60 ID:???
>>847
仕事でやると、レプリケーションが大変なことになりそうだが。
850NAME IS NULL:2011/05/28(土) 21:22:12.84 ID:???
レプリケーションって何?
851NAME IS NULL:2011/05/28(土) 22:13:09.40 ID:???
ggr
852NAME IS NULL:2011/05/28(土) 22:15:12.54 ID:???
>>849
意味が分からないんだけど…DBに画像を格納するとどうしてレプリケーションが大変に??
853NAME IS NULL:2011/05/28(土) 23:16:15.26 ID:???
いや、画像云々じゃなくて、仕事でやると大変ということ。
854NAME IS NULL:2011/05/28(土) 23:19:20.90 ID:???
855NAME IS NULL:2011/05/29(日) 01:14:54.19 ID:???
DBに画像保管とか、素人乙としかいいようがない設計
856NAME IS NULL:2011/05/29(日) 01:23:57.38 ID:???
>>855
あまり初心者をいじってやるなよ。かわいそうだろ。
857NAME IS NULL:2011/05/29(日) 09:01:13.96 ID:???
>>841

-h localhost  ←これを付けなかったらどうなるかな?
858NAME IS NULL:2011/05/29(日) 09:16:32.51 ID:???
>>849>>855
クラスタ組んでいる場合なんかはDBMSに任せられる分逆に楽だと思うけどね。
859NAME IS NULL:2011/05/29(日) 10:15:22.02 ID:???
>>858
画像とかサイズあるから、大量にくるとレプリケーション遅延するっしょ。
スレイブの状態がバラバラになる可能性も出る。
860NAME IS NULL:2011/05/29(日) 12:44:37.69 ID:???
そりゃサイズ次第だな。
スレイブの状態がバラバラってのは意味がわからん。
MySQL ClusterはBLOBの一貫性に問題があるってこと?
861NAME IS NULL:2011/05/29(日) 13:05:01.35 ID:???
巨大データが届くと遅延が発生してバラバラって事でしょ
掲示板とかに書きこんだ文字がなかなか表示されなかったりね
バイナリデータに差異が起きるのでなく、時間的に差異が出る
862NAME IS NULL:2011/05/29(日) 13:35:32.45 ID:???
そういう現象が発生するとしたらクラスタとして成り立っていないことになるが…
MySQL Clusterにそういう問題があると言っている?
いずれにしても、画像を外出しにしたらその同期のところを全部自前で用意しなきゃ
ならんわけだよ。
863841:2011/05/29(日) 14:54:29.35 ID:???
>>854 どうもありがとう。読んでみます。
864NAME IS NULL:2011/05/29(日) 15:25:38.52 ID:???
クラスタって何?
865NAME IS NULL:2011/05/29(日) 18:32:35.73 ID:???
>>862
あぁ MySQL Cluster ってオンメモリだけなお大臣ソリューションあったなw
一般的なレプリケーションの時の話ですね。

同期のところを自分で〜ってのも多分HTTPサービスだろうからリバースプロキシ+キャッシュとか、rsync でえっちらおっちらとか、そちらの手法も色々確立されてるし
画像をDBにつっこんで幸せな状況もあるし。
うちは両方やってるよ
866NAME IS NULL:2011/05/29(日) 19:14:10.30 ID:???
レプリケーションでもあんまり事情は変わらんと思うがなぁ。
画像は同期が取れていないことがあってもいいから通常レコードの
同期だけは早く終わらせたいとか、そういう暗黙の前提があるのかね。
867NAME IS NULL:2011/05/29(日) 20:46:12.65 ID:???
>>866
通常マスタは更新専用で読み出しはスレイブからになる。だから、スレイブの最新データがそれぞれ違うと大問題。
大手サイトのケーススタディみたいなの見るといいよ。
ほぼみんな同じ運用。
画像はDBとは別管理で、DBはレプリケーションで、マスタ・スレイブ。スレイブ増やして負荷分散。

最近はAmazonS3に画像などファイル預けるのがデフォになりつつあるもうな気もする。
868NAME IS NULL:2011/05/29(日) 20:59:30.77 ID:???
だからさ、DBと画像の同期ズレは許容すんのが前提なの?で、スレーブ間の同期は
そんだけシビアなの?
そもそも、スレーブ間の完全な同期が必要だったらレプリケーションでやっちゃダメじゃんw
それを、画像が含まれないなら無視できる範囲だからやっちゃえ、てなもんか。
869NAME IS NULL:2011/05/29(日) 22:27:50.45 ID:???
レプリケーションって何?
870NAME IS NULL:2011/05/29(日) 22:42:16.29 ID:???
>>868
画像はそもそもDBとは別に管理するもんだ。DBスレイブには画像は置かない。
まぁ自分はそこまで大きなシステム触ったことないけど、静的ファイルの配信は負荷分散というより、冗長化による信頼性なんじゃないかな。
バックアップするだけで、レプリケーションするわけじゃないと思う。
詳しい人教えて。
871NAME IS NULL:2011/05/30(月) 00:35:25.65 ID:???
大学の卒業研究でMySQL、PHPを1年ほど使用してデータベースサーバを
の構築をした経験があり、実務経験がないのですが、転職ってできますかね?

現在大学4年なので新卒向けのサイトを見て就職するのが一般的なのですが
給料等の面から、同じ正社員であれば転職のほうが良いなぁと考えています。
お詳しい方教えてください。
872NAME IS NULL:2011/05/30(月) 00:44:27.57 ID:???
環境構築云々より何を作ったかが大事
873NAME IS NULL:2011/05/30(月) 00:52:57.85 ID:???
実務経験がないなら新卒以下の待遇だろうな
874NAME IS NULL:2011/05/30(月) 02:22:51.65 ID:???
>>871
その程度の人材なら二束三文で手に入るので別にどうでもいいし
それしかウリがないのなら むしろいらないんだけど

というのが正直な回答になるよね・・・申し訳ないけど
875NAME IS NULL:2011/05/30(月) 02:53:48.28 ID:???
素直に新卒枠で見ていった方が良さそうですね。
ありがとうございました。
876NAME IS NULL:2011/05/30(月) 07:35:03.62 ID:???
画像をDBへの話は、画像を入れるタイミングが
人によって想定がバラバラに見える。

多少の信頼性の低さを許容出来るような WEBサービスを
前提とした場合の話になってしまうが、
画像を管理者が更新する場合はスレーブの遅延は気にならないはず。
# 更新頻度が低く、画像を公開するタイミングをコントロールできる

画像アップロード掲示板みたいなユーザー更新で
画像が追加される場合は、頻度が多いので
遅延を許容して専用DB用意するなり、KVS なりに逃がすのが
いいんじゃなかろうか

ちなみに、うちの場合は「ユーザー更新のサービスはしてない」、
「画像の合計容量が数Gしかない」という条件なので、
一番性能が良いと考えて、WEB用サーバ自体にファイル同期してる。
# サーバは300台前後
877NAME IS NULL:2011/05/30(月) 18:28:43.84 ID:???
状況によって変わるから絶対の解は無いよね
画像が入ったテーブルのダンプがでかくて嫌とかもあるな
878NAME IS NULL:2011/05/31(火) 00:21:36.86 ID:???
バイナリファイルをダンプで出すこと出来ましたっけ?
879NAME IS NULL:2011/05/31(火) 01:36:31.82 ID:???
基本を分かってあえて崩す技使うのはあり得るが、それを初心者にいきなり教えるなっつーこと。
あえてそれやるレベルの人間がここで「4G越えたらテーブルを分割して対応しているの?」なんて
質問するわけないだろう? だから、ここでの回答は一律「画像をDBに入れんな」 でいいんだよ
880NAME IS NULL:2011/05/31(火) 07:07:01.39 ID:???
DBとDB管理外のリソースに分ける方が基本なのかw
どうも常識が違うようだ。
881NAME IS NULL:2011/05/31(火) 07:16:40.70 ID:???
自分が今まで勉強のために見たすべてのケーススタディは、バイナリは別管理だった。
882NAME IS NULL:2011/05/31(火) 09:41:20.20 ID:???
テーブルのフィールドタイプがInnoDBで
全体のフィールドタイプがMyISAMになってることに気がついたんですが
このままでも問題ないでしょうか
883NAME IS NULL:2011/05/31(火) 11:56:02.26 ID:???
>>882
言ってることが良く解らん。

デフォのテーブルタイプがMyISAMと設定されてるけど、
いくつかInnoDBなテーブルも存在してしまってるってことか?

それは、もーまんたい。
884NAME IS NULL:2011/05/31(火) 12:22:17.13 ID:???
>>883
そのとーりです。
特に支障なく動いているようなのですが、
気持ち悪いので統一したほうがいいのかとおもって
885NAME IS NULL:2011/05/31(火) 13:10:25.82 ID:???
>>880
君どこで勉強したの?
886NAME IS NULL:2011/05/31(火) 20:39:29.66 ID:???
>>880
君の常識は怖いな。
887NAME IS NULL:2011/05/31(火) 20:54:30.95 ID:???
>>884
統一じゃなく、テーブルの使用目的に合わせて設定すべきだぞ。
MyISAMとInnoDBの違いとか勉強すべし。
888NAME IS NULL:2011/05/31(火) 21:56:47.39 ID:???
>>887
最近は、調べていくと、InnoDB一択にしか
ならなくない?
よっぽどでなければそれ以外の選択肢に
ほとんど意味がない感じがする。
889NAME IS NULL:2011/05/31(火) 22:37:27.38 ID:???
全文検索さえなければ
890NAME IS NULL:2011/06/01(水) 01:44:42.31 ID:???
>>847
DBとファイルシステムを深く知らない俺には無理だ。
891NAME IS NULL:2011/06/01(水) 04:09:28.72 ID:???
likeで実現できない検索機能は作らない。これでOK
892NAME IS NULL:2011/06/01(水) 14:05:48.78 ID:???
>>891
うんこだな
893NAME IS NULL:2011/06/01(水) 16:56:16.75 ID:NFtZrkjM
MySQL 3.23 から 5.0.90 にデータ移行したいのですが、
下記のシンタックスエラーで移行できませんでした。

ERROR 1064 (42000) at line 4: 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 '-------------------------------------------------------

どうにか、移行する方法はないでしょうか。
894NAME IS NULL:2011/06/01(水) 17:20:00.05 ID:NFtZrkjM
自己レスです。
line 4 を消したら移行できました。m(_ _)m
895NAME IS NULL:2011/06/01(水) 20:29:12.32 ID:???
MySQL5.5.8でテーブルの列名を変更したいのですが、

ABC.DEFのように列名に「.」が含まれているため上手く変更できません。

ALTER TABLE z09_96 CHANGE COLUMN ABC.DEF ABC_DEF;
などと入れると
"Incorrect table name 'ABC'"
といったエラーが出てしまいます。
.がテーブル指定の.と認識されていると思うのですが回避策は有りませんでしょうか。
896NAME IS NULL:2011/06/01(水) 20:49:58.05 ID:???
>>895
バックスラッシュで囲む。
mysql> ALTER TABLE z09_96 CHANGE COLUMN `ABC.DEF` ABC_DEF CHAR(10);
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
897NAME IS NULL:2011/06/01(水) 22:07:37.39 ID:???
>>896

書き方は合ってるけど、それはバックスラッシュじゃないよ。
898NAME IS NULL:2011/06/01(水) 22:15:15.84 ID:???
バッククォートだな。
899NAME IS NULL:2011/06/01(水) 22:22:20.85 ID:???
後で泣き見そうなカラム名だなや
900NAME IS NULL:2011/06/01(水) 23:05:44.41 ID:???
ここにのせるのに適当な名に変えてんでしょ?実際にそうだったらプログラマは泣くだろうけど w
901NAME IS NULL:2011/06/01(水) 23:22:56.85 ID:???
>>894
ぐぐれカスと言わざるを得ない
902NAME IS NULL:2011/06/02(木) 03:14:21.22 ID:???
>>901
ググらなくてもエラー見ればどこを直せばいいかはわかるという・・・
903NAME IS NULL:2011/06/02(木) 04:18:09.34 ID:???
でも英和辞典が必要だけどね!
904NAME IS NULL:2011/06/02(木) 06:34:33.50 ID:???
>>903
この程度の英語で辞書とか釣りだろ?
905NAME IS NULL:2011/06/02(木) 11:25:29.85 ID:???
>>904
自分が英語がわかるのを自慢したいのか?
それともわからないのにカッコつけてるだけか?
906NAME IS NULL:2011/06/02(木) 14:05:37.14 ID:???
>>905
いやまじで、あの程度の英語を毎回辞書で調べてたらプログラミングなんかできなくね?
エラーも全部英語だし。

それにしても、日本人はほんまに英語できんのやなぁ。英語=自慢とか。
907NAME IS NULL:2011/06/02(木) 14:51:14.54 ID:???
>>896
'とか"で囲って無理だったので諦めてました、無知でした。
ありがとうございます!

カラム名変えてます。
908NAME IS NULL:2011/06/02(木) 14:57:53.37 ID:???
まるで他人ごとだなw
在日乙
909NAME IS NULL:2011/06/02(木) 19:04:48.10 ID:???
質問です。phpからの操作になりますが、
id varchar(8), a00001 boolean, a00002 boolean・・・みたいなテーブルがあります
(フィールドの数字は飛び飛びです、boolean型のフィールドは数百あります)
ここでinsert文で特定の項目にだけ情報を入れることはできますか?
例えばa00100とa00300にだけtrueを入れて、後は全部falseみたいな時に(idにも適切な値を入れる)
どのようにinsert文を作るのがよいでしょうか?
「このフィールド名を持つフィールドは前から何番目か」というのがわかれば、php側でなんとかできそうですが・・・
910NAME IS NULL:2011/06/02(木) 19:10:39.72 ID:???
>>909
INSERT INTO unko SET hoge=1;
という話?
911NAME IS NULL:2011/06/02(木) 19:39:13.69 ID:???
>>910
うおー、今までvalues(ごちゃごちゃ);って書き方しか知りませんでした
勉強になりました、解決しました、ありがとうございます!
912NAME IS NULL:2011/06/02(木) 21:36:48.40 ID:???
tinkoとかunkoとか下品な言葉を使うのは止めてください。
913NAME IS NULL:2011/06/02(木) 21:38:19.45 ID:???
バッククォートってキーボードでどうやって入力すればいいのでしょうか。
914NAME IS NULL:2011/06/02(木) 21:46:49.57 ID:???
>>913
`
915NAME IS NULL:2011/06/02(木) 22:16:17.73 ID:???
どのキーを押せば出るのでしょうか。
916NAME IS NULL:2011/06/02(木) 22:24:32.30 ID:???
Shift+@

ちったぁggr
917NAME IS NULL:2011/06/02(木) 23:14:49.54 ID:???
‘ ←こんなのが表示されましたが、これでいいのでしょうか。
918NAME IS NULL:2011/06/03(金) 00:29:19.88 ID:???
゛←これじゃね?
919NAME IS NULL:2011/06/03(金) 00:34:16.03 ID:???
(‘_ ‘ ) < んなわけねーだろ
920NAME IS NULL:2011/06/03(金) 03:05:53.61 ID:???
mysqlが起動するmysqldの優先度(nice)を、
いつも -1 に固定するような設定を、
/etc/security/limits.conf でできませんか?
MySQL 5.1や5.5では、my.cnf にて nice=-1 とすれよかったのですが、
MariaDB(5.2.6使用ですが, これに限らす) ではこれが機能しないのです。
よろしくお願いします。
921NAME IS NULL:2011/06/03(金) 11:56:47.45 ID:???
mysqldumpの書き方で質問です。
特定のテーブルのみを指定したくて、以下のように書きました。

mysqldump --host=localhost -- user=ユーザ名 --password=パスワード DB名 user* admin* | gzip > ファイル名.gz

しかし、バックアップファイルは出来ません。
テーブル名にワイルドカードを指定できないのでしょうか?
922NAME IS NULL:2011/06/03(金) 14:33:26.16 ID:???
>>921
自分で実際にやってできないのにどうしてできると思うんだ?
923NAME IS NULL:2011/06/03(金) 17:11:14.18 ID:???
/var/lib/mysqlを丸ごとコピーすればバックアップできると思うのですが、
敢えてmysqldumpを選ぶ理由って何かあるのでしょうか?
924NAME IS NULL:2011/06/03(金) 19:16:20.89 ID:???
MySQLのSQLで質問があります。
回答して頂ける方が居られれば、宜しくお願いします。

下記の3つのテーブルがあり、itemごとに複数のcotegoryを設定できるため、
rel_item_categoryでitemとcategoryを紐付けています。
レコード数はdat_itemが5万行、dat_categoryが20行、rel_item_categoryが15万行です。

dat_item
- item_id
- price
- date

dat_category
- category_id
- name

rel_item_category
- item_id
- category_id
925NAME IS NULL:2011/06/03(金) 19:18:51.01 ID:???
category_idが1かつdateが指定日時以下のitemをpriceでソートして取得したいため、
下記のクエリを発行しました。

SELECT dat.*
FROM dat_item AS dat
INNER JOIN(SELECT item_id FROM rel_item_category WHERE category_id = '1' GROUP BY item_id) AS rel
ON dat.item_id = rel.item_id
WHERE dat.date < '2011-06-03 02:21:00'
ORDER BY dat.price

意図した結果が取得できますが、
EXPLAINで確認したところ、Using temporary; Using filesortになっており、
relとdatが結合したあとでソートされているようで、非常にコストがかかっています。
926NAME IS NULL:2011/06/03(金) 19:20:12.91 ID:???
コストがかかってしまいましたか。
なるほど、勉強になりました。
927NAME IS NULL:2011/06/03(金) 19:21:42.00 ID:???
>>924 >>925 の続きです。

SELECT item_id FROM rel_item_category WHERE category_id = '1' GROUP BY item_id
この結果のテーブルrel_item_category_1をつくり、下記クエリを発行したところ
結合前のdat_itemでインデックスを使用してソートできました。

SELECT dat.*
FROM dat_item AS dat
INNER JOIN rel_item_category_1 AS rel
ON dat.item_id = rel.item_id
WHERE dat.date < '2011-06-03 02:21:00'
ORDER BY dat.price

最初に提示した3つテーブルだけで
「category_idが1かつdateが指定日時以下のitemをpriceでソートして取得」を高速に行うことはできないのでしょうか?
928NAME IS NULL:2011/06/03(金) 19:22:01.98 ID:???
>>923
1つのファイルに収まる、圧縮して容量も劇的に減らして残しておける。
あとはDB全体をリストアするなど。
(mysqldump→全データベース削除、関連ファイル初期化→インポートしたらまっさらな状態からテーブルが作られる)
929NAME IS NULL:2011/06/03(金) 19:23:22.73 ID:???
なるほどね…。
このケースだとそのような疑問がでるのか…。
ご報告ありがおう。
色々と勉強になりました。
930NAME IS NULL:2011/06/03(金) 20:45:09.03 ID:???
SELECT dat.*
FROM dat_item dat
INNER JOIN rel_item_category rel ON dat.item_id = rel.item_id
WHERE rel.category_id = '1'
AND dat.date < '2011-06-03 02:21:00'
ORDER BY dat.price;

だと何か問題あるのか
931NAME IS NULL:2011/06/03(金) 20:46:48.89 ID:???
>>923
丸ごとコピーは原則mysqldを停止しないとダメ
mysqldumpはmysqldを動かしたままとれる
932921:2011/06/03(金) 22:06:46.31 ID:???
>>922
「出来る方法があるのではないか?と思って質問した次第です・・。

データベース内にいくつもテーブルを作っているケースってあるでしょうし、
必要なテーブル名を全て列挙するのも面倒と思いまして。
それしか方法がないなら納得しますが、他に方法はあるのではないか?
自分が知らない事があれば教えて欲しい。そう思って質問しました。
933NAME IS NULL:2011/06/03(金) 22:16:16.99 ID:???
バッククォートってキーボードでどうやって入力すればいいのでしょうか。
Shift+@
と昨日教わりましたが、

このように表示されてしまいます。
なお、IMEはPCに入っていたものを使っています。
934NAME IS NULL:2011/06/03(金) 23:00:33.28 ID:???
` ←Shift + @
‘ ←IME on で Shift + @

結論:IME切れ、ハゲ
935NAME IS NULL:2011/06/03(金) 23:02:10.29 ID:???
IMEを切れとのことですが、切るとはどのような行為を示していますか?
切るとハゲに関係があるのかしらん?
936NAME IS NULL:2011/06/03(金) 23:43:40.88 ID:???
つまらない事聞きますけど、「PC用」「携帯用」とフィールドを分けるとき、
どういうフィールド名にしていますか?
電話番号の場合、telはPC用として、携帯はmobile_tel?ktai_tel?
937NAME IS NULL:2011/06/04(土) 00:47:10.59 ID:???
サーバのバージョン: 5.1.44-community
MySQL クライアントのバージョン: mysqlnd 5.0.5-dev

とかいうときMySQL Connector Netはどのバージョンをインストールしたらいいのでしょうか?
938NAME IS NULL:2011/06/04(土) 00:53:49.98 ID:???
>>930

そのSQLでUSE INDEXでdateとpriceの複合インデックスを指定するか、
WHERE句にprice>0を追加することで、インデックスを使ったソートが出来ました。

大変助かりました。本当にありがとうございます!
939NAME IS NULL:2011/06/04(土) 10:00:57.58 ID:???
>>936
好きなようにしたら?としかいいようがないけどw


そういう事は↓で話ししたほうが宜しいのでは?

DB設計を語るスレ 3
http://hibari.2ch.net/test/read.cgi/db/1269585561/l50
940NAME IS NULL:2011/06/04(土) 11:23:45.20 ID:m9IbrQpl
すみません。

http://www.inter-office.co.jp/contents/170/
こちらの記事を見たのですが、

InnoDBについて一番大事なことは主キーがクラスターインデックスだということです。

とのことで、
InnoDBであれば、主キーにはインデックスを設定しなくても、
勝手にクラスターインデックスが付いてインデックスを使った検索ができるという認識でいいのでしょうか。

よろしくお願いします。
941NAME IS NULL:2011/06/04(土) 11:35:47.08 ID:m9IbrQpl
>>940

の続きです。
外部キーについても、

主キー制約 ・・・一意なインデックスを生成する
外部キー制約・・・インデックスを生成する
一意制約 ・・・一意なインデックスを生成する
http://wiki.minaco.net/index.php?MySQL%2F%E5%88%B6%E7%B4%84

とのことで、
制約を付けた時点でインデックスが設定されているということでいいのでしょうか。

度々すみませんがよろしくお願い致します。
942NAME IS NULL:2011/06/04(土) 14:16:55.14 ID:???
>>941
なんかオプションをつけるとだいたいインデックスがつく
943NAME IS NULL:2011/06/04(土) 16:12:35.39 ID:???
主キーにはインデックスをはらなくてもって、
主キーこそがインデックスだと思うんだが、
自分の認識間違ってるのか。
944NAME IS NULL:2011/06/04(土) 22:24:29.98 ID:???
>>943
お前の場合は人生そのものが間違いだ
945 忍法帖【Lv=5,xxxP】 :2011/06/05(日) 00:53:12.69 ID:???
お次の質問どうぞ。
946NAME IS NULL:2011/06/06(月) 00:22:49.46 ID:???
正規化によって繰り返し項目を別表に分けた後は、どのように結合すればよいでしょうか??
SQL文を2つに分けたら解決しますが、1つで出来ないでしょうか?

table1
id,table2id,name

table2
id,data

table1id name data1 data2...
1 'abc' 'abcの趣味1' 'abcの趣味2'...
947NAME IS NULL:2011/06/06(月) 00:25:10.23 ID:???
>>937

Connector/Net, Connector/Jはクライアントライブラリ使わないので、サーバ側にあわせて何でもよいよ。
サーバ側5.1ならConnector/Netの最新版(6.3.6)でいいんじゃね?
948NAME IS NULL:2011/06/06(月) 01:26:21.99 ID:???
>>946
left join
949NAME IS NULL:2011/06/06(月) 02:55:19.06 ID:???
>>948
ありがとうございます!
結果も1行で取得したいのですが、不可能でしょうか?
それともleft join等で複数行で取得するのが一般的でしょうか?
950NAME IS NULL:2011/06/06(月) 02:58:38.79 ID:???
基本的には複数行で取得するのが一般的だな。
どのみち「abcの趣味」が複数あるわけだからプログラム側でうまく処理すればいい。
951NAME IS NULL:2011/06/07(火) 00:55:07.04 ID:???
>>950
ありがとうございます!
プログラム側で対処する事にします!
952NAME IS NULL:2011/06/07(火) 19:23:07.61 ID:Maj1FVhL
大量のSQL文の処理が終わらない…
処理を速くする方法はあるでしょうか?それとも根本的に何か間違えているのでしょうか…

http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-categorylinks.sql.gz
このファイルは解凍すると500MBになり、最初の40行でテーブルを作成して
以下INSERTを繰り返すSQL文になっています
http://pastebin.com/7s10E71y

localhostでこのsqlファイルを処理してるんですが1時間たっても終わらない…
こんなものでしょうか?


以下MySQLの使用環境です
mysql-5.1.49-3
OS: Linux (debian-squeeze)

以下実行したコマンドです
$ mysql -u user userdb < jawiki-latest-categorylinks.sql
<処理が終わらない>

最初の41行文(INSERT2行)だけならすぐに処理が終わり、SELECTで読み込まれていることが確認できました
$ head -n41 jawiki-latest-categorylinks.sql > test.sql
$ mysql -u user userdb < test.sql
953NAME IS NULL:2011/06/07(火) 20:31:30.13 ID:???
500MBでしょ?5時間もすればおわるでしょ
954NAME IS NULL:2011/06/07(火) 21:02:37.03 ID:???
>>952
見てないけど、sql文のはじめの方でインデックスを作成してる場合は、インデックスを作成せずに create table をやると多少というかかなり速くなる
で、タプルが全部 insert された後にインデックスを追加する
(たぶん、sqlファイルの最初のcreate table 文でキーの指定をしてるので、それを全部取り除く)

あと、ファイルサイズと関係なく、MySQLはタプル(行、レコード)の数が10万を超えると、検索の方も遅くなって使い物にならなくなるので、タプルが10万を超える場合は、かなり慎重に設計や最適化をする必要がある
(ちゃんとやれば、10万以上でもそれなりに速く動く)
>>952 のダンプデータは本当に MySQL のダンプなのでしょうか?
955NAME IS NULL:2011/06/07(火) 22:27:03.45 ID:???
mysql-connector-netをダウンロードしに行ってきたんですが、
メアドで[email protected]みたく前半でドットが入ると蹴られるのね。
956NAME IS NULL:2011/06/07(火) 23:42:59.31 ID:???
>>955
そりゃRFC違反だからな。弾きもするだろ。
957952:2011/06/07(火) 23:53:22.36 ID:???
>>953
まさに5時間ぐらいでした
こんなものなのかー

インデックス削れば速くできますよね、ありがとう気づかなかった
958NAME IS NULL:2011/06/08(水) 00:32:19.62 ID:???
2分48秒でロードできたよ

MySQL 5.5.11、Core i5-2400S、Intel X25-M G2 120GB
innodb_buffer_pool_size = 2G
959NAME IS NULL:2011/06/08(水) 00:44:22.69 ID:???
>>954
タプルってtableのこと?
そういう読み方流行ってんの?
960NAME IS NULL:2011/06/08(水) 00:44:29.55 ID:???
>>958
Innodb なら log buffer sizeも関係ありそう?

まぁ、質問主がどんなSQLなんかわからんけど、1行ずつ入れると遅いし
insert .... values(),(),()
は常識だよな?
961NAME IS NULL:2011/06/08(水) 00:46:21.06 ID:???
10万程度ならインデックスなくてもそれなりに早いよな。
962952:2011/06/08(水) 01:22:45.04 ID:???
ありがとおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお!
innodb_%_size 弄ったら劇的に速くなった!!
試しに↓でやってみたら5時間かかってたのが12分で終わった!インデックス削れば更に速くなるかもです。
[mysqld]
innodb_buffer_pool_size = 512MB
innodb_log_file_size = 128M

他にも複数コア使う設定とかもあるのかな?CPUパワーあまり使ってくれてない感じがする…
wikipediaが配布してるデーター読みたくてMySQL使い始めたんですが、
他にも良さそうな設定あればヒント頂けるとありがたいです。

>>960
こんなSQLでした。
http://pastebin.com/7s10E71y
963NAME IS NULL:2011/06/08(水) 06:14:20.41 ID:???
>>962
Wikipediaのデータで遊びたいなら全文検索あったほうがよくないか?
それならMyISAMになるが。日本語だとちょいと工夫がいるけど。
groongaとかで遊んで見たら?
964NAME IS NULL:2011/06/08(水) 07:56:59.67 ID:???
5時間が12分に短縮って、、、、 w
965NAME IS NULL:2011/06/08(水) 08:15:30.37 ID:???
>>959
釣りだと思うけどw
タプル=セット=組=レコード一件
966NAME IS NULL:2011/06/08(水) 09:23:01.56 ID:???
タプルって呼び方はPostgreSQLの人がよく使う印象
967NAME IS NULL:2011/06/08(水) 10:56:43.49 ID:???
ID | NAME
1 | a
2 | a
3 | b
4 | c

NAMEが重複しないIDを取得したいのですが
SELECT DISTINCT NAME FROM テーブル名
だとNAMEしか取得できなくて困っています。

すごく初歩的なことかと思うのですがヒントだけでも教えてください。
お願いしますm(__)m
968NAME IS NULL:2011/06/08(水) 11:06:14.03 ID:???
>>967
SELECT ID,NAME FROM unko GROUP BY NAME;

MySQL以外じゃろくに動かないから注意な
969NAME IS NULL:2011/06/08(水) 14:23:02.84 ID:???
タプルはtupple
英語だとテュープルに近いw
970967:2011/06/08(水) 15:02:33.22 ID:???
>>967
ありがとうございました。

GROUP BYですね。
勉強してきます!!
971967:2011/06/08(水) 15:03:39.45 ID:???
あ、安価間違いましたorz
>>968さんありがとうございました。
972NAME IS NULL:2011/06/08(水) 18:26:07.26 ID:???
>>962
他の設定次第だけど insert が多い場合は
set global innodb_flush_log_at_trx_commit=0
も速くなるよ。
これするとクラッシュしたときデータが当てに
ならなくなるので大量の insert などが終わったら
set global innodb_flush_log_at_trx_commit=1
で元に戻しておいたほうがいい。
# 手元の開発環境とかならお好きに

本番環境でも大量にある参照用スレーブとかは
この設定にしておくとレプ遅延が起こりにくかったりする。
973NAME IS NULL:2011/06/08(水) 19:39:43.77 ID:???
>>965,966,969
「ブ」じゃなくて「プ」なのか。タプルって用語を知らなかった。
974NAME IS NULL:2011/06/08(水) 23:30:24.71 ID:???
>>956

RFC5321 4.1.2. を読んで言ってるんだろうね?
975NAME IS NULL:2011/06/09(木) 00:17:04.60 ID:???
>>974
そりゃもちろん。メール絡みのRFCは全て読んだよ。
まあここはMySQLのスレだから これ以上は屋上いこうか。
976NAME IS NULL:2011/06/09(木) 00:31:55.62 ID:???
>>975

顔から火が出るほど恥ずかしくなって屋上から飛び降りるってか?

読んだだけでまるで理解していないというのはかなりたちが悪いんだよね。
何事も半可通が一番迷惑なんだよ。
977NAME IS NULL:2011/06/09(木) 02:09:31.75 ID:???
>>976
半可通って久し振りに聞いた。
978NAME IS NULL:2011/06/09(木) 09:24:02.27 ID:???
id, col, value
1, n, apple
1, c, red
2, n, banana
2, c, yellow
3, n, grape
3, c, green
3, w, 100

のような、各ID番号、列記号、値の入ったテーブルがある時、
id, n, c, w
1, apple, red, NULL
2, banana, yellow, NULL
3, grape, green, 100
のような出力を得たければ、どうするのが定石でしょうか。

979NAME IS NULL:2011/06/09(木) 09:39:34.39 ID:???
ドットを使うくらいじゃRFC違反にはならないからね
980NAME IS NULL:2011/06/09(木) 10:32:13.01 ID:???
>>978
たぶんこんな感じ。
select a.id, a.value, b.value, c.value
from table a left join table b left join table c
where a.id=b.id and a.id=c.id
981NAME IS NULL:2011/06/09(木) 18:44:21.83 ID:???
>>980
やっぱり列の数に応じて必要なだけjoinするしかないんですかね…。
982980
間違えた。こうか?

select a.id, a.value, b.value, c.value
from table a
left join (select * from table where col='n') b
left join (select * from table where col='c') c
where a.id=b.id and a.id=c.id;