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

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

MySQL 総合 Part19

1 :NAME IS NULL:2011/01/19(水) 20:25:46 ID:???
オラクル社によるオープンソースの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


2 :NAME IS NULL:2011/01/19(水) 20:29:36 ID:???
前スレdat落ちしてたので立てた

3 :NAME IS NULL:2011/01/19(水) 23:04:37 ID:???
基本的な技術ですが調べても
わからないので質問させてください。

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

マニュアルによると
Null…電話番号が不明
空白…電話を持っていない
とありますが、
将来的に入れるかわからない・
どちらかというと値を入れない可能性が高い場合などは
どちらを採用しておいた方が検索が高速なんでしょうか?

4 :NAME IS NULL:2011/01/19(水) 23:27:05 ID:???
NULL

5 :NAME IS NULL:2011/01/20(木) 01:18:05 ID:???
MySQLはNULLもINDEX効くので性能は同じ。
性能うんぬんよりも、NULLを扱うかどうかで
比較の仕方やCOUNT(col)の結果が異なるので要注意
ttp://d.hatena.ne.jp/LukeSilvia/20100322/p1

6 :NAME IS NULL:2011/01/21(金) 17:35:11 ID:OMsdM3Xs
MySQLはDecimalでは符号も符号も1バイトとカウントされることがありますよね。
他のDBMSでも同じように符号を1バイトとカウントするものなのでしょうか。

7 :NAME IS NULL:2011/01/21(金) 19:29:28 ID:???
Oracleも1バイト

「有効桁数38桁未満の負数の場合は更に1バイト加算」
http://otndnld.oracle.co.jp/skillup/oracle9i/3_1/index.html


8 :NAME IS NULL:2011/01/21(金) 22:27:02 ID:???
phpとmysqlに詳しい人
今作ってるゲームで、ウェブから特定のテーブルにアイテムデータなんかの入れ込みをしたいんですが
最終的な部分で詰まってます。
コード修正できる人いたらお願いしたいです。

謝礼として5000WebMoney(5000円分)となります。
詳しくは中のファイルにサイトとデータベースファイル入れておりますのでご覧下さい><
http://www1.axfc.net/uploader/He/so/309832
※ウィルスや釣りではありません

9 :NAME IS NULL:2011/01/22(土) 01:07:48 ID:???
>>8 ウィルスばら撒いて楽しいですか?


10 :NAME IS NULL:2011/01/22(土) 01:26:01 ID:E4S0qg9W
質問です。
MySQLでテーブルをロックした場合、
別の人がアクセスすると、どうなるのでしょうか。

エラーが返るのか、ロック解除されるまで順番待ちなのでしょうか。

11 :NAME IS NULL:2011/01/22(土) 07:15:49 ID:???
READロックの場合は Select 可能、更新はブロックされる(アンロックされるまで待たされる)
WRITEロックの場合はSeelctも更新もブロックされる

12 :NAME IS NULL:2011/01/22(土) 11:17:29 ID:E4S0qg9W
>>11
ありがとうございます。

> WRITEロックの場合はSeelctも更新もブロックされる
これもアンロックされるまで待たされるという認識でいいですか?

13 :NAME IS NULL:2011/01/23(日) 17:30:36 ID:yOYPt3h9
C言語でMYSQL操作を書いています。
UTF8の可変文字列をselectで取得すると、
結果が必ず「??????????????」となってしまいます。

環境:Linux(Fedora core)

14 :13: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]);

};

15 :NAME IS NULL:2011/01/23(日) 17:36:21 ID:???
OSのTermの文字コードかmysqldの文字コードかCのソースの文字コードのどれかがおかしい気がする

16 :13:2011/01/23(日) 17:52:14 ID:yOYPt3h9
うーむ。OSのターミナル、MYSQL, Cのソース、全てUTF8で統一したんですがねえ。

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


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

朝からいろいろ調べたり試したりしていたら、もう日曜日が終わっちゃう。
何やってんだか<俺

17 :NAME IS NULL:2011/01/23(日) 18:00:23 ID:???
>>16
あと、ドライバの文字コードも合わせないとダメ
ちなみに、文字コードを指定して、その文字コードに対応してなくてもエラーを出さないドライバもあるから確認したほうがいい

18 :13:2011/01/23(日) 18:04:23 ID:yOYPt3h9
ドライバというのは、MYSQLのC言語用ライブラリ(libmysqlclient.so
)のことでしょうか。

たしかにその視点では見てなかったです。これから調べます。


19 :NAME IS NULL:2011/01/23(日) 18:33:17 ID:???
>>12
遅くなってゴメソ
それでおk

20 :13:2011/01/23(日) 20:31:39 ID:yOYPt3h9
./configure --with-charset=utf8の後MYSQLのコンパイル中です。

CPU ATOMで遅い・・・もう30分経ったけどコンパイル終わらない。

21 :13:2011/01/23(日) 21:47:43 ID:yOYPt3h9
Make installでうまくいかない・・・

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



22 :NAME IS NULL:2011/01/23(日) 22:10:38 ID:???
それが一番の正攻法だと思うぞ

23 :13:2011/01/24(月) 00:24:43 ID:F93vBYzp
結局、目的を達成できました。
スレ違いなので詳しくは書かないけど、
Linuxで録画サーバを立てています。epgrecというアプリを使っています。
MYSQLで全ての番組情報、録画情報の管理をやります。
私はそこから録画情報を引っ張ってきて、ファイル名を変えてみたり番組のジャンル別に
シンボリックリンクを張ってみたりするツールを作りました。
変なところではまったけれど、予定どおり、日曜日中に終わってよかったよかった。ありがとうございました。

24 :6:2011/01/24(月) 10:53:04 ID:???
>>7
ありがとうございます。
勉強になりました。

25 :NAME 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

26 :NAME IS NULL:2011/01/24(月) 18:55:51 ID:???
/etc/init.d/mysqldを叩いてmysqld_safeが実行されるのは正常
mysqld.logのもっと上の方を見ないとわからん


27 :NAME 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
---

となります。

28 :NAME 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にしています。

以上、なにかアドバイスをいただければ幸いです。
よろしくお願いいたします。

29 :NAME 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

30 :28:2011/01/24(月) 21:49:28 ID:???
>>29

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

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

ttp://ameblo.jp/tetsuya-staff/entry-10139707964.html

31 :29: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

32 :28:2011/01/24(月) 23:05:40 ID:???
>>31

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

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

しらべたら私のの使っているバージョンは「5.5.8」でした。

33 :NAME 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の記述を削除。


34 :NAME IS NULL:2011/01/25(火) 07:52:00 ID:KWJnChon
>>33
おぉ!?
その方法で実行できました!
ありがとうございます!
すみませんが、理由教えてもらうことってできますか?

35 :NAME 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は外してよい
まあハマりどころかもしれない

36 :NAME 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を超える可能性があるかもしれません。
今の状況だとまず実用は無理なのですが、いい方法はないでしょうか。

37 :36: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クエリで解決する方法がありましたらぜひ…。


38 :NAME 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';

39 :NAME 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

40 :NAME IS NULL:2011/01/27(木) 00:33:49 ID:???
Innodb hotbackup買おうと思って予算つけたら、なんかEnterprise用サブスクリプション買わないといけなくなってんだけどー(;_;)$5,000/年なんて無理だぽ

41 :NAME IS NULL:2011/01/27(木) 00:34:40 ID:???
XtraBackupでがんばれ

42 :NAME IS NULL:2011/01/27(木) 02:37:04 ID:???
>>41
調べてみる!ありがとう!

43 :NAME IS NULL:2011/01/28(金) 21:15:31 ID:???
レプリケーションについて質問させてください
家庭用のLinuxパソコンとYahoo!ADSL環境にてレプリケーションの練習をしてみたいのですが出来ますでしょうか?
server-idにてサーバ毎に設定するのは分かるのですが、master-hostでマスターサーバ名 or IPアドレスを指定する所でどのようにすればいいのか分かりません
IPアドレスはモデムからの動的アドレスになっていますし、マスターの方も特にレンタルサーバ等にあげているわけでもありません
こういった自分の環境下ではどのような過程を経ればレプリケーション環境を作れルのでしょうか?

44 :NAME IS NULL:2011/01/29(土) 02:06:46 ID:???
初めまして。誰か助けていただけませんか。

Select結果に対してupdateを行いたいのですが、うまいコマンドが見つかりません。
代替案としてSelect結果を一時テーブルとして格納して、それに対してupdateをかければ・・・
と思ったのですが、一時的にテーブルを保存することも見つけることができませんでした。
どなたかよろしくお願いします。

45 :NAME IS NULL:2011/01/29(土) 04:59:05 ID:???
>>44
SELECT文の処理結果は(テーブルではなく)レコードセットでしかないから、
レコードセットをUPDATEする事そのものが不可能だよ。

もし一時テーブルを使うなら、一時テーブルへのINSERT文に
ソーステーブルへのSELECT節を組み合わせることで可能になると思う。

46 :NAME IS NULL:2011/01/29(土) 05:23:12 ID:???
>>44
Javaだと更新可能カーソルというのがある
http://www.techscore.com/tech/J2EE/JDBC/5.html


47 :NAME IS NULL:2011/01/29(土) 05:24:39 ID:???
>>43
Linuxパソコンをもう一台買うか仮想化して家庭内でやればいいと思う

48 :NAME IS NULL:2011/01/29(土) 12:42:40 ID:???
>>44
複雑でなければCASEやIFで対応。

49 :NAME IS NULL:2011/01/29(土) 14:29:18 ID:???
質問です
innodbでinnodb_file_per_tableの設定をしてテーブル毎にデータファイルを作成するようにしているのですが、
テーブル毎のデータファイルを任意のサイズまで大きくする方法はありますか?
(データファイルを大きくする理由はディスク上のファイルの断片化を避けるためです)

50 :NAME IS NULL:2011/01/29(土) 15:50:31 ID:???
>>45,46
迅速かつ丁寧な解答をありがとうございました。今から試してみるつもりですが、
とりあえずお礼までにとレスさせていただきます。

51 :NAME IS NULL:2011/01/29(土) 15:56:49 ID:???
>>49
機能としてはないと思う
ダミーデータをINSERTしてDELETEするくらいしか思いつかない

52 :NAME IS NULL:2011/01/29(土) 16:03:13 ID:???
>>48
誤ってアンカーを外しておりました、申し訳ありません。
回答ありがとうございました。

53 :NAME IS NULL:2011/01/29(土) 16:03:57 ID:???
その機能ほしいねえ

54 :NAME IS NULL:2011/01/29(土) 16:22:33 ID:???
innodb_autoextend_incrementがinnodb_file_per_tableのときも効くなら、
大きめの値を指定しておけば実質的にファイルの断片化を気にする必要はなくなると思う。

が、対応してないんだなー
http://bugs.mysql.com/bug.php?id=31592

55 :NAME IS NULL:2011/01/29(土) 18:05:28 ID:???
>>51,54
レスありがとうございます
innodb_autoextend_incrementという設定があるんですか。勉強になりました。

56 :NAME IS NULL:2011/01/30(日) 16:57:29 ID:???
MySQL ヤンキーDQN
PostgreSQL エリートビジネスマン

どうして差がついたのか・・・
慢心、環境の違い

57 :NAME IS NULL:2011/01/30(日) 17:01:38 ID:???
ヤンキーDQNの方が年収が高い業界で何を言ってるんだろうか…

58 :NAME 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文が実行される時に各々取得するのでしょうか?
それだとトランザクションの意味が無いような気もしますが。

59 :NAME IS NULL:2011/01/30(日) 21:46:00 ID:???
それ実現するにはSTART TRANSACTION叩いた瞬間に
すべてのテーブルのすべてのレコードをロックすることになってしまうだろう

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

何をやりたいかは知らんけど
START TRANSACTION WITH CONSISTENT SNAPSHOT;
を調べたら幸せになれるかも

60 :58:2011/01/30(日) 23:28:36 ID:7GhU5U/J
>>59

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

START TRANSACTION WITH CONSISTENT SNAPSHOT;
これは私の環境で実行すると
Query OK, 0 rows affected
としか出てこないようです。。ドキュメント読んで勉強してみます。

61 :NAME 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をかける

62 :NAME IS NULL:2011/01/31(月) 00:35:23 ID:???
>>60
そのトランザクションが各テーブルに最初に触るのがUPDATEの時なんだから
そこで初めてロックをかけるだけで問題ない。
仮にトランザクション開始からUPDATEまでの間に他トランザクションが
テーブルに何らかの更新を行った場合と、トランザクション開始時点から
その状態だった場合とではトランザクションの結果に差はない。

63 :NAME IS NULL:2011/01/31(月) 04:55:01 ID:???
失礼します。質問させてください。

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

C:User>java Select

+---------+-----------+
| pref_cd | pref_name |
+---------+-----------+
| 1 | 北海道 |
| 2 | 青森県 |
+---------+-----------+


64 :NAME IS NULL:2011/01/31(月) 11:57:41 ID:???
>>61
googleが1秒以内に検索結果を出してくるネット上で「そんなの知ってた」の後出しか…
ここまでの馬鹿は初めて見た

65 :NAME IS NULL:2011/01/31(月) 18:15:28 ID:???
エスパー!出番ですよー!

66 :NAME 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されたように重複が消えています。
何故ですか???

67 :NAME IS NULL:2011/02/02(水) 08:06:23 ID:???
重複列じゃなくて重複行ね?
サブクエリにしなくても消えると思うけど

68 :NAME 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から行っています

69 :68:2011/02/04(金) 01:29:01 ID:???
それから、文字コードはUTF-8を使っています。
set names utf8;しても状況に変化はありません

70 :NAME IS NULL:2011/02/06(日) 13:42:02 ID:???
CのAPIについてもここでいいんですか?

71 :70:2011/02/06(日) 13:44:35 ID:???
70ですが、総合よりもバージョンインディペンデントなスレに移動しました。
お騒がせしました。

72 :NAME IS NULL:2011/02/06(日) 15:46:20 ID:???
>>68
とりあえずあるあるとだけ
回避方法は私も知らない

73 :NAME 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を同じにするためには
どうしたら良いのでしょうか??

74 :NAME IS NULL:2011/02/07(月) 00:45:21 ID:???
last_insert_idでぐぐるといいよ

75 :NAME IS NULL:2011/02/07(月) 07:04:34 ID:???
つまりテーブルBのname_idは、AUTOINCREMENTにする必要は無い。
というか、しちゃいけないというところでしょうか。

76 :NAME IS NULL:2011/02/07(月) 14:26:26 ID:???
ここってMySQL信者しかいない系?
PostgreSQLとか嫌い系?

77 :NAME IS NULL:2011/02/07(月) 16:43:47 ID:???
>>76
http://hibari.2ch.net/test/read.cgi/db/1294641578/

78 :NAME IS NULL:2011/02/07(月) 21:47:51 ID:???
phpMyAdminで標準となっている1ページ30行の表示数を
常に100行ぐらいに変えたいんだけどどこをいじるんだ?

ローカルのphpMyAdminなのでどのファイルにでもアクセスできる。
多少スレ違いですまん。

79 :NAME 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)'
とエラーがでてパスワードを設定できません、どうしたらいいのでしょうか・・・

80 :NAME IS NULL:2011/02/08(火) 03:37:08 ID:???
>>79
using password: YES
で試してみる。

81 :NAME 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です。
さくらのスタンダードプランのレンタル鯖です。


82 :NAME IS NULL:2011/02/08(火) 23:07:09 ID:???
レンサバならあきらめれ。
バックアップからリストアするべし。

83 :NAME IS NULL:2011/02/10(木) 00:29:26 ID:???
質問です
パーティション切ったテーブルのパーティション名と区切り値を項目ごとにカラムで取得する方法はありますでしょうか?
show create tableで定義は確認できますが、パーティション名と値を個別で取得したいです。

84 :NAME 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

85 :NAME IS NULL:2011/02/10(木) 16:43:45 ID:eEqqb7a6
クエリキャッシュを最近知りました。
これって、同じselect文のばあい、2回目以降は最初の結果を返すってことですよね?

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

これは最初のselect結果がキャッシュされた後にテーブル情報がupdateやdeleteされたら
そのキャッシュは適用されないってことですか?

86 :NAME IS NULL:2011/02/10(木) 22:37:37 ID:???
YES
不整合は起こさないようになってる
ブログみたいに一度書いたらあとは読むだけみたいなシステム向きの機能

87 :NAME IS NULL:2011/02/11(金) 00:17:59 ID:???
会社のWEBサービスを初めて1人で立ち上げたのですが、MySQLの知識が無くてヒヤヒヤの毎日です。
最近やっと1日のPVが30万ぐらいになったのですが、DBバックアップを全く行っていません。
ネットで調べてみるとレプリケーションという手法でデータ冗長化するのが正攻法のようです。
稼動済みのWEBサービスをレプリケーション化しても問題起きないでしょうか?
また、正しいサービスの運営の仕方としては、やはり最初からレプリケーションするべきだったのでしょうか?
現状ではサーバー費用の問題もあり、サービス開始時は1台のサーバーにApacheもMySQLも全て詰め込んでおります。

88 :NAME IS NULL:2011/02/11(金) 01:23:23 ID:???
ポスグレに変えるべき

89 :NAME IS NULL:2011/02/11(金) 12:10:53 ID:???
>>87
>稼動済みのWEBサービスをレプリケーション化しても問題起きないでしょうか?
事前にバイナリログの設定をしていない場合、稼動中にスレーブ追加はできない

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

技術的に頼る人がいないなら、偉い人と調整して
・毎週日曜4時にサービス停止
・mysqldを停止してdatadirをまるごとバックアップ
・5時にサービス再開
みたいなスケジュールを組んだ方がいい

90 :NAME IS NULL:2011/02/11(金) 15:33:51 ID:???
サービス停止するまでも無い
mysqldumpで十分だろ

91 :NAME IS NULL:2011/02/11(金) 22:14:59 ID:???
>>86
ありがとうございました

92 :NAME IS NULL:2011/02/12(土) 03:17:09 ID:???
>>90
ひどいアドバイス
それで解決するなら誰も苦労せんわ

93 :87:2011/02/12(土) 18:12:06 ID:???
返事が遅れてしまいすいませんでした。
返信してくれた方、ありがとうございます。

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

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

>>90
>>92
この方法は問題なのでしょうか?
ネットで調べるとmysqldumpという言葉もよく見たので候補にはあったのですが。

94 :NAME IS NULL:2011/02/12(土) 20:54:16 ID:???
mysqldumpで整合性のあるバックアップをとる場合は

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

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

そこまで踏み込まないと回答できないのを分かってて >>90 みたいな
答え方をすると「ひどいアドバイス」と言われる

95 :NAME IS NULL:2011/02/12(土) 22:28:50 ID:???
その情報をもっと引き出す為の質問者の煽り
10年前からある手法だろ…

96 :NAME IS NULL:2011/02/13(日) 01:23:45 ID:???
88が一番近道なのにな

97 :NAME 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です。
どなたかご教授いただけたら幸いです。
よろしくお願いいたします。

98 :NAME 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です。
どなたかご教授いただけたら幸いです。
よろしくお願いいたします。

99 :NAME 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を指定するのは
クライアント側の設定を変えるだけなので、関係ない。


100 :NAME IS NULL:2011/02/14(月) 10:53:52 ID:ozbtbTzR
WorkbenchのDataModelingでDiagramを書いているのですが、複数のテーブルを同時に開く方法はありませんか?
タブみたいになっているのに、新しいテーブルを開くと既存のタブに上書きされてしまって同時に開けません。

テーブルとレイヤーとか別の種類なら同時に開けるみたいなんですが…。
編集項目が名前と色だけのレイヤーとか開けても全然うれしくないですし、こんな糞仕様とは考えにくいのですが。

101 :NAME 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 で立派な対応だ”
っていうのでもわかるんですが、もっと技術的なノウハウを知りたいなと。。

本の紹介でも良いので、教えてくれると嬉しいです。
みんな、プロの人はどうやってそんなの勉強してるんですかね?

102 :NAME IS NULL:2011/02/16(水) 01:32:03 ID:???
キャッシュ
適切なインデックスを張る
memcached / KVS
メモリにデータが乗るかどうか(乗り切れないとHDDへの物理アクセス発生して劇遅)

などで調べてみると少し入り口が見えるかもしれません

103 :6:2011/02/16(水) 09:50:30 ID:XM7AGT4t
カラム数が80個ほどでレコード数が1000万件くらいのテーブルが
40個あります。
40個のテーブルには随時更新がかかる状態なんですが、
この40個のテーブルのある瞬間のデータを取得したい時って
どうすればよいですか?
データを取得するときには更新とかを行わせたくないのですが、
ロックするしか無いのでしょうか?

104 :NAME IS NULL:2011/02/16(水) 09:56:58 ID:???
>>101
データ件数によるパフォーマンスの劣化を気にするなら、30万件なり1200万件なり用意して
テストしてみるのが一番だと思う。

技術的にどうしているって訊かれても、実際に近いデータを用意して色々試して、EXPLAIN
でその違いを調べる、の繰り返しかな。
本とかに書いてある知識は、その調査のための手がかりかきっかけみたいなもので、そのもの
ずばりとノウハウにはあまりなってない。少なくとも自分はそう思っている。

105 :NAME 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にならないですが…


106 :NAME IS NULL:2011/02/16(水) 11:06:28 ID:???
intはいつから10進数になったの?

107 :NAME IS NULL:2011/02/16(水) 13:21:06 ID:???
phpがmysqlにデータ書き込みしてる最中に
pythonのプログラムも同じテーブルに重複して書き込みするとどうなるの?

108 :NAME IS NULL:2011/02/16(水) 13:57:39 ID:???
プログラムの巧拙とテーブル設計の巧拙による・・・としか言いようがないな。

109 :NAME IS NULL:2011/02/16(水) 14:04:33 ID:???
mysqlの排他制御を自動でしてくれるのはphpぐらい?

110 :NAME IS NULL:2011/02/16(水) 16:28:50 ID:???
いやトランザクションなやInnodbがやってくれるじゃん

111 :NAME IS NULL:2011/02/17(木) 13:53:32 ID:Q1IYVTaB
テーブルの主キー(autoincrement)のインデックスを1でなく10000からスタートさせるには
どうやったら良いんですか?

112 :NAME IS NULL:2011/02/17(木) 16:00:29 ID:???
ALTER TABLE tbl AUTO_INCREMENT = 10000;

113 :NAME IS NULL:2011/02/17(木) 16:42:45 ID:CUZWRZbZ
不要なテーブルtbを削除しようとしたところ、外部キーの関係と思われるエラーで削除できません。
制約やインデクスの削除もできないため、試しに関連のfrmファイル等を直接削除(移動)してみました。
動作上は現在のところ何ごともないようなのですが、
別に管理データが残ったりなど、何か問題起こりうるものでしょうか。

114 :113:2011/02/17(木) 16:49:02 ID:CUZWRZbZ
(補足)
外部キーの参照テーブルはすでに削除されているらしく
tbはどこからも参照されていない状況です

115 :NAME IS NULL:2011/02/17(木) 19:27:42 ID:???
>>112
ありがとうございました

116 :NAME IS NULL:2011/02/17(木) 22:12:38 ID:???
FROMがFORMになって全然気づかなくて困ったことあるヤツ挙手

117 :NAME IS NULL:2011/02/17(木) 22:38:15 ID:???
mysqlは

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

って言われないのか

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

MySQL データ 数万件 サンプルあたりで調べてもヒットせず…


119 :NAME IS NULL:2011/02/18(金) 01:07:58 ID:???
>>118
つ wikipedia

120 :NAME IS NULL:2011/02/18(金) 01:11:53 ID:???
趣旨がよく分からん
プログラムでランダムに文字列作ってinsertするんじゃ駄目なのか?
数万行のinsertなら数秒で終わるだろ

121 :NAME IS NULL:2011/02/18(金) 01:32:19 ID:???
適当に数十件程度の元データを作って、select,insertを繰り返していけば
倍々に増えていくから何件だろうが
作業自体は簡単。

122 :NAME IS NULL:2011/02/18(金) 02:18:32 ID:AKSHwj8u
sqlでjavaの変数を参照するにはどうすればいいですか?

123 :NAME 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したいのですがなかなかうまくいきません。
どうすれば最終目的に辿りつけるのでしょうか?
ご教示お願い致します。

124 :NAME IS NULL:2011/02/19(土) 00:55:58 ID:???
> 商品リストテーブルをJOINしたいのですがなかなかうまくいきません。

どのようにうまく行かないのですか?
どんなSQLを書いてみたかもわからないから応え難いです


125 :123: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.商品ナンバー

上記で一応は期待する結果が得られましたが、
これでいいものなのでしょうか?

126 :NAME 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)

こんな感じ

127 :NAME 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で試しましたがいずれも同じ結果でした。

128 :NAME IS NULL:2011/02/20(日) 20:15:00.19 ID:???
>>127
30クエリバラバラにしたほうが早そうだな。

129 :NAME IS NULL:2011/02/20(日) 21:09:43.08 ID:???
1つのテーブル内にあるフィールド2つをまとめて
ひとつユニークキーみたい(重複不可能)に
したいのですが、どうやるのでしょうか?
MyISAMです。

130 :NAME IS NULL:2011/02/20(日) 22:25:58.89 ID:???
>>129

ttp://dev.mysql.com/doc/refman/4.1/ja/multiple-column-indexes.html

131 :NAME IS NULL:2011/02/21(月) 08:08:01.12 ID:???
>>127
MySQLでテーブル二桁JOINする時点でたぶんダメ。
Oracleと同じJOIN順になるようにFROM句並べ替えてSTRAIGHT_JOINつけてみて、
改善されないようならOracle買うかPostgreSQLで。

132 :NAME 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)

とリストアしようとすると、はじかれてしまいます。
これはなぜでしょうか。お願いいたします。

133 :NAME IS NULL:2011/02/24(木) 00:10:29.12 ID:???
>>132

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

だったらどうなる?

134 :NAME IS NULL:2011/02/24(木) 04:52:33.89 ID:???
>>133
ありがとございます

135 :NAME IS NULL:2011/02/24(木) 15:00:28.34 ID:???
「MySQLは1つのクエリーで1つのテーブルに対し、1つのインデックスしか機能しない」

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

1つのテーブルに複数のインデックスをつけても意味が無いというわけ?

136 :NAME 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作った方がいい。


137 :127:2011/02/25(金) 00:19:10.67 ID:???
>>129>>131
クエリをバラすと、テストデータ程度の件数に置いては他のDBMSと遜色ないレベルに
なることがわかりました。

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

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

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

cmakeとかになったとか見つけましたが、centOSにはリポジトリにcmakeは無いですし、コンパイル時の引数も今までの
が使えなくなりそうだし

139 :NAME IS NULL:2011/02/25(金) 19:05:47.75 ID:???
Aテーブルに、
c1, c2, c3, c4, c5, c6
という6個のカラムがあり、
このうち3個以上がnullでない行を取り出したいのですが、
SQLでどう表現すればいいのか分かりません。
分かる方がいましたら教えてください。お願い致します。

140 :NAME IS NULL:2011/02/25(金) 19:51:46.84 ID:???
>>138
CentOSならRHEL用のRPMを使えばいいのでは

141 :NAME 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

142 :NAME IS NULL:2011/02/25(金) 23:46:16.51 ID:???
>>141
頭いいな

143 :NAME IS NULL:2011/02/26(土) 01:44:39.24 ID:???
へーこんな書くんかー

144 :140:2011/02/26(土) 02:10:28.43 ID:???
>>141
ありがとうございました!
無事期待通りの動作を実現できました。
JOINとかサブクエリとかごちゃごちゃ使わないと無理だと思っていたので目から鱗でした。

145 :139:2011/02/26(土) 02:11:04.37 ID:???
すいません名前間違えました。

146 :NAME IS NULL:2011/02/26(土) 14:32:00.34 ID:???
>>141
Excel VBAだなw

147 :NAME IS NULL:2011/02/26(土) 20:51:10.32 ID:+NrYsy5E
>>103
InnoDBなら、トランザクション分離レベルを適切に設定してあげればできそう。


148 :NAME 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を出力するような、その他の例外と言うのがどういう状況の事を言っているのか分かりません。

149 :NAME IS NULL:2011/02/27(日) 11:09:21.45 ID:???
既存のテーブルのcreate文を確認する方法ってありますか?
ご存知でしたら教えていただきたいです。

150 :NAME IS NULL:2011/02/27(日) 11:21:54.63 ID:???
>>149 バックアップの中身を見たことあるか?

151 :NAME IS NULL:2011/02/27(日) 15:07:40.37 ID:???
>>150
どうやってバックアップとるんですか?
って聞いてくるだろ。

MySQLのデータフォルダで
rm -rf ./*
だな。/じゃないから優しいだろ。

152 :NAME IS NULL:2011/02/27(日) 15:45:54.90 ID:???
>>149

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

>>151
かなり優しいですね。これなら心も体もスッキリしますねw


153 :NAME 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

何か設定が必要なんでしょうか?


154 :NAME IS NULL:2011/02/27(日) 22:48:48.95 ID:???
>>149
show create table テーブル名

155 :NAME 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側にはありません。

156 :NAME IS NULL:2011/03/02(水) 07:26:21.87 ID:???
MySQL側でそのMYSQLユーザーに FILE権限を与えていないんでしょ

157 :NAME IS NULL:2011/03/02(水) 07:29:11.58 ID:???
>>155

ttp://dev.mysql.com/doc/refman/4.1/ja/select.html
>この形式の SELECT を使用するには、サーバホストに対する FILE 権限が必要となる。

158 :NAME IS NULL:2011/03/02(水) 20:40:40.41 ID:???
すいません自己解決しましな

159 :NAME 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のままです。

何か他の設定が必要なのでしょうか?

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

どなたかお願いします。

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

162 :NAME IS NULL:2011/03/03(木) 18:54:07.72 ID:???

nullポ

163 :NAME IS NULL:2011/03/04(金) 04:39:19.52 ID:???
EXPLAINすると確かにBatched Key Accessが効いてるようだ。
が、実速が変わったとはとても思えない。

164 :NAME 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を試してみましたが、
効果はありませんでした。


165 :NAME IS NULL:2011/03/04(金) 16:48:23.89 ID:???
>>164
きっと凡ミスだと思うけど
・JavaでINSERTして別のJavaでSELECTするとどうなるか?
・InnoDBの場合COMMITしてるか?
ぐらい

166 :164:2011/03/04(金) 18:36:40.81 ID:???
>>165
アドバイスありがとうございます。
>・JavaでINSERTして別のJavaでSELECTするとどうなるか?
>・InnoDBの場合COMMITしてるか?
どちらも問題なしです。

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

普通は繋ぎっぱなしで問題ないものですよね?


167 :NAME 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'
とのこったままになります。

168 :NAME IS NULL:2011/03/08(火) 16:21:09.08 ID:???
>>167
その状態でどのテーブルに対する何の権限が残っている?
権限のあるほかのユーザーをSHOW GRANTSして
表示内容を比較してみると?

あ、ユーザー自体を削除したいならDROP USERでおk

169 :NAME IS NULL:2011/03/08(火) 18:09:21.61 ID:???
ニコニコ大百科というサイトがデータベースエラーで落ちたみたい


エラーメッセージ

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


ダメじゃん

170 :NAME 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 を利用して"

171 :NAME 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'
これで当たり前。

172 :NAME IS NULL:2011/03/08(火) 20:39:57.43 ID:???
>>171
ありがとう。
>>170は無視しちゃってください!

173 :NAME 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だけ別のデータを入れたいと思っています。
よろしくお願いします。

174 :NAME IS NULL:2011/03/10(木) 17:01:31.35 ID:???
>>173
>selectしたデータを一部だけ別のテーブルに入れる方法ってありますか?
>この場合table1のデータがすべてtable2に入るのでaaaだけ別のデータを入れたいと思っています。
言ってる事違ってね?

175 :NAME 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);
みたいな感じで取得したいかなーって

176 :173:2011/03/10(木) 20:52:37.61 ID:mHQFBpTb
>>174
間違ってました。ごめんなさい。
一部じゃなくて二部です。と言うことでよろしくお願いします。

177 :NAME IS NULL:2011/03/14(月) 04:35:03.16 ID:gnWaLDBM
#sql-123_456e7.MYD
#sql-123_456e7.MYI
#sql-123_456e7.frm

のようなファイルがデータベースディレクトリにあり、容量をかなり食っています。
このファイルは何でしょうか?

178 :NAME IS NULL:2011/03/14(月) 07:31:07.78 ID:???
>>177
各ファイルのサイズを教えてください。

179 :NAME IS NULL:2011/03/14(月) 09:07:03.55 ID:???
>>177
リペア中に強制終了したとき、そんな名前のファイルが残ってたような気がする。

180 :NAME IS NULL:2011/03/14(月) 21:03:11.99 ID:???
>>178
1GBを超えてる。

>>179
インデックス作成時のテンポラリ、という情報が見つかりました。
強制終了時の残骸かな…と思ったのでさっくり消しました。
データベースは問題なく動いてます。

181 :NAME IS NULL:2011/03/15(火) 10:59:13.05 ID:???
>>180
DB稼動中に消した?それとも停止してから消した?

182 :NAME IS NULL:2011/03/15(火) 15:50:21.62 ID:???
>>181
止めてから消去。
rm -rf "#sql-123_456e7.MYD" で。

183 :NAME IS NULL:2011/03/15(火) 23:49:40.63 ID:???
なんで -r が要るんだ?

184 :NAME IS NULL:2011/03/17(木) 15:29:45.23 ID:???
MySQLからフォークした「Drizzle」、初のGAリリース
http://sourceforge.jp/magazine/11/03/17/050217


185 :NAME IS NULL:2011/03/18(金) 19:50:16.11 ID:???
perlのモジュールのDBD::mysql が正しくインストールできません。
この場所にどなたかお詳しい方はおられますでしょうか?

186 :NAME IS NULL:2011/03/22(火) 01:03:40.42 ID:???
>>185
遅レスだが...

Perl::DBI
http://hibari.2ch.net/test/read.cgi/php/1015943725/


187 :NAME IS NULL:2011/03/25(金) 01:33:34.95 ID:NIeHWslM
基本的なこと聞きますけど、テーブルをMyISAMにしている場合、
同時接続が100以上あった時、データが壊れたり
INSERT/UPDATEが正しく行えない可能性はありますか?

188 :NAME IS NULL:2011/03/25(金) 06:31:03.41 ID:???
>>187
素人だけど、
たぶんselectは大丈夫じゃないかな。書き込みはテーブルロックだから待たされる可能性ありか。
どんくらいで待ちが発生するかはやったことないからわからんが。

MySQL 5.5からはinnoDBがデフォルトだし、MyISAMでないといけない場合(全文検索とか)以外はinnoDB推奨らしい。

189 :NAME IS NULL:2011/03/25(金) 11:10:00.55 ID:???
>>188
innoDB推奨になるんですか!?
自分はてっきりMyISAMが推奨(多く使われている)とばかり思っていました。

MyISAMでもLOCK〜UNLOCKの処理をするとロックをかけられるようですが、
ファイルロックと同じような感じだと思うので、>>187の点はどうなのかな?
っと思い、質問しました。やはりinnoDBのトランザクションが良いんですかね

190 :NAME IS NULL:2011/03/25(金) 11:16:40.29 ID:???
いつの話してんだw

191 :NAME IS NULL:2011/03/25(金) 17:15:58.60 ID:???
8年前だな

192 :NAME IS NULL:2011/03/25(金) 22:45:25.80 ID:???
読み込み中心なら、速度重視であえてMyISAMを選ぶこともあるけどね

193 :NAME IS NULL:2011/03/26(土) 01:11:21.59 ID:???
Webアプリなんかでアクセスログを保存する時は
テーブルをInnoDBにして

BEGIN→INSERT→COMMIT

としてるけど、間違ってないよね?ね?

194 :NAME IS NULL:2011/03/26(土) 01:14:17.45 ID:???
アクセスログをDBに突っ込んで何がしたいの?

195 :NAME IS NULL:2011/03/26(土) 02:21:49.31 ID:???
1つのSQLなら別にトランザクション使わなくてもいいのでわ。

196 :NAME IS NULL:2011/03/26(土) 02:27:39.83 ID:???
>>194
自分もDBにいれてるよ。そんなアクセス多くないから。
Archiveエンジンで。

197 :NAME IS NULL:2011/03/26(土) 02:31:34.91 ID:???
OSSのシステム見ると、InnoDBにしているの多いよね

198 :NAME IS NULL:2011/03/26(土) 07:53:47.38 ID:???
ログ程度ならMyISAMにしてるな。
トランザクションも制約も要らんもんね。

199 :NAME IS NULL:2011/03/26(土) 15:38:48.01 ID:???
UTF-16は使えますか?

200 :NAME IS NULL:2011/03/26(土) 18:03:17.00 ID:???
>>198
そうなの?俺はMyISAMのログテーブルを
これからInnoDBにしてトランザクションかけようかと悩んでいるんだけど

201 :NAME IS NULL:2011/03/26(土) 19:05:29.35 ID:???
>>199
MySQL 5.5から対応してる

202 :NAME IS NULL:2011/03/26(土) 19:34:37.27 ID:???
>>200
ログ以外のテーブルとの整合性が必須なほど大事な案件だったら、それもいいんじゃない?

203 :NAME IS NULL:2011/03/26(土) 21:31:13.67 ID:???
>>200
ログ程度になんでトランザクションが必要なんだ?
アクセス過多でMyISAMのテーブルロック回避のためinnoDBの行ロックに変えるってんならわかるけど。

204 :NAME IS NULL:2011/03/26(土) 22:21:38.09 ID:???
>>202-203
オンラインゲームみたいなの作ってて、ポイントのログを取得してるんだよ。
誰がどのゲームでいくらのポイントを得たかっていうログを。

今まではMyISAMで問題無さそう(に見えた)だんだけど、
今回リニューアルするから、どうしようかなと悩んでる。
リニューアルはアクセス過多が原因だったわけだし。


205 :NAME IS NULL:2011/03/26(土) 22:25:21.09 ID:???
そりゃ単なるログじゃなくて、機能部だろ。

206 :NAME IS NULL:2011/03/27(日) 00:55:22.21 ID:???
>>201
ありがとうございます。

207 :NAME IS NULL:2011/03/28(月) 13:44:15.02 ID:???
mariadbの話題はこのスレでいいの?


208 :KOUZOU TAKAHASHI:2011/03/28(月) 16:13:38.27 ID:cdA0H2BD
MYSQLの質問はここでいいですか?
よろしくお願いします

209 :NAME IS NULL:2011/03/28(月) 17:14:28.22 ID:???
>>208
まず日本語を話せるようになってから来てください。

210 :NAME IS NULL:2011/03/28(月) 17:32:39.88 ID:???
>>208
知恵袋か教えてGooへ行ってらっしゃい!

211 :NAME IS NULL:2011/03/28(月) 23:50:40.86 ID:???
おまえらMySQLやってるのにMariaDBの話題がないのは事情を知らないだけ?

212 :NAME IS NULL:2011/03/29(火) 00:10:06.12 ID:???
MySQLを実務で使っているからこそ今のところは様子見とか?
Oracleフリーである以上のメリットってなんかあったっけ?

213 :NAME IS NULL:2011/03/29(火) 00:13:12.72 ID:???
>>211
綺麗な姉ちゃんに育ったマイは嫁に行ったよ
ブサイクでforkなマリアは行くあてが無くてね、父ちゃんと二人暮しさ

前スレでも見たら?

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

テーブル構造がこんな感じで…
id(auto increment), name(unique), text"

215 :NAME IS NULL:2011/03/29(火) 03:37:58.65 ID:???
適当なテーブル作って試してみればわかることだろ

216 :NAME IS NULL:2011/03/29(火) 05:27:18.65 ID:???
>>215
それを言っちゃおしまいよ。
忙しすぎてそこまで考えられんのだろう。


ほら、擁護してやったんだからなんかくれよ。

217 :NAME IS NULL:2011/03/29(火) 15:24:39.75 ID:???
このスレで質問書く暇はあるんだな

218 :NAME 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スペシャルだけ引っ掛けたいんですけど
どうすればいいですか?

おねがいします。

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

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

こうなるな

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

チャーハン4とかチャーハン王様とか全部引っかかるような

221 :NAME IS NULL:2011/03/29(火) 20:27:11.90 ID:???
定食を抜きたいならnotかな。
チャーハンの後が漢字のを除去したいなら正規表現使う。

222 :NAME IS NULL:2011/03/29(火) 20:53:27.20 ID:???
>>220
> チャーハン4とかチャーハン王様とか全部引っかかるような

なら LIKE 'チャーハン%' でいいじゃん

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

素直にデータの見直しをしてみます。
数万行あるけどwww


224 :NAME IS NULL:2011/03/29(火) 21:16:05.42 ID:???
WHERE menu REGEXP 'チャーハン[0-9]+.*'


225 :NAME IS NULL:2011/03/29(火) 21:41:58.38 ID:???
結局、質問者がどんな条件でどんな行をSELECTしたかったのかすら分からなかったというオチ

226 :NAME IS NULL:2011/03/29(火) 22:13:26.52 ID:???
OS名を見ろ。釣りだ。

227 :NAME IS NULL:2011/03/29(火) 22:30:27.37 ID:???
>>226
釣りじゃないです。

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

お願いします。

228 :NAME IS NULL:2011/03/29(火) 22:44:30.41 ID:???
一行先と比較ではなく、
一行前と比較すればよい

229 :NAME IS NULL:2011/03/29(火) 22:53:18.56 ID:???
>>228
ありがとう。
脳味噌を塩水で洗ってくる。

230 :NAME IS NULL:2011/03/29(火) 23:09:04.53 ID:???
>>226
>OS名を見ろ。釣りだ。
あえてスルーしてたんだけど、改めて見るとおもろいわ
【OS名】Linax

231 :NAME IS NULL:2011/03/29(火) 23:13:29.09 ID:???
>>230
ごめん。スルーしてよw
ただのtypoというか脳がカビてた。。。

なんなら"TOTO"でもスルーしてw

232 :NAME IS NULL:2011/03/30(水) 00:08:03.09 ID:???
+id+-pra-+--sab--+
| 1 | 牛丼 | ネギ濁 |
| 2 | 牛丼 | ネギ濁 |
| 2 | 牛丼 | + 生卵 |
| 3 | 牛丼 | 生 卵 |

id2を一行として出力するのはどうすれば良いですか?

233 :232:2011/03/30(水) 00:11:35.65 ID:???
出力というか、同一データとして処理するにはという事です。

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

こんな感じで。

234 :NAME IS NULL:2011/03/30(水) 00:23:29.03 ID:???
そんなのはSQLの仕事じゃない
ストアドでも書いとけ

235 :NAME IS NULL:2011/03/30(水) 00:48:53.51 ID:???
sab ww

236 :NAME IS NULL:2011/03/30(水) 11:40:09.35 ID:???
>>233
GROUP_CONCAT関数を使え

>>234
バーカ

237 :NAME IS NULL:2011/03/30(水) 21:28:58.35 ID:???
sabの型ををvarchar(10)ぐらいにして”ネギ濁 + 生卵”という文字列をデータにする

238 :NAME IS NULL:2011/03/30(水) 21:55:30.96 ID:7xrkyPyI
すみません、意味の分からない質問かも知れないですが、
mysql用のポート(3306)があると思うんですが、これは別のサーバーから別のサーバーの中の
mysqlを操作する時に必要なんでしょうか?
同じサーバのwebアプリからのみ使うときは開放しなくてもいいものですか?

239 :NAME IS NULL:2011/03/30(水) 22:00:57.80 ID:???
>>238
127.0.0.1:3306

240 :NAME 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動いていました

241 :NAME IS NULL:2011/03/31(木) 00:53:12.66 ID:???
>>240
RH-Firewall-1-INPUT というチェインはlocalhostからlocalhostへのアクセスに関係してるのか?

242 :NAME 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が問題なく実行されているのです。

わかる?

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

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

簡単なmysqlの使い方みたいな本見て触ってただけなので、
ポートとかiptablesとの関係なんてのってないし考えたこともなかったです
聞いて良かったです、ありがとうございました。勉強します

244 :NAME IS NULL:2011/03/31(木) 04:12:20.41 ID:???
socket使用でもいるんだっけ?

skip-networking!!!!!!

245 :NAME IS NULL:2011/03/31(木) 11:28:57.23 ID:???
>>242
ずいぶん回りくどい説明だな

246 :NAME IS NULL:2011/03/31(木) 12:31:13.88 ID:DLbNnEWK
ユーザーテーブルにbirthdayカラムが格納されており、
このデータを元に毎日どのユーザーが誕生日なのかを検索したいと考えています。

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

毎日実行することになるためbirthdayカラムにインデックスを貼りたいのですが、
上のように、birthdayを直接使うのではなく関数の入力として使う場合でもインデックスは有効になりますか?
もしならない場合は解決法などあるのでしょうか?
よろしくお願い致します。

247 :NAME 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 = [今日の日付];


248 :246:2011/03/31(木) 15:01:42.69 ID:DLbNnEWK
>>247
ありがとうございます!
なるほど、カラムを増やさないといけないのですね。。
データ量が増えるのが少し怖いですがやってみます。ありがとうございました。

249 :NAME IS NULL:2011/03/31(木) 16:59:20.07 ID:???
>>246
MySQLには詳しくないが[今日の日付]の型をbirthdayに合わせればいいのではないのか?
SELECT * FROM users WHERE birthday = 日付型に変換([今日の日付]);
で、birthdayにインデックスを貼る。

250 :NAME IS NULL:2011/03/31(木) 17:09:20.51 ID:???
いや、毎年のことだからね
DBに1984/3/31って入ってたら3/31部分で
マッチングかけないといけないから
フィールド側に演算が必要になる

251 :NAME IS NULL:2011/03/31(木) 19:42:20.88 ID:???
>>246

SELECT * FROM users WHERE birthday LIKE '%/3/31';

252 :NAME IS NULL:2011/03/31(木) 20:32:01.95 ID:???
>>251
インデックスはどこいったんだよ

253 :NAME IS NULL:2011/03/31(木) 20:34:23.34 ID:???
>>252
必要ない。
データベース検索速度なめすぎ。

254 :NAME IS NULL:2011/03/31(木) 22:52:22.61 ID:???
1万人ぐらいならインデックスなくても平気だろうね。
ただ高性能サーバを使っても
インデックスありの性能>インデックスなしの性能
が変わるわけではなく東京電力にやさしくない

255 :NAME IS NULL:2011/03/31(木) 23:04:21.89 ID:???
件数もハードスペックもわからない状態でパフォーマンスについて言い切るアホを見た。

256 :NAME IS NULL:2011/03/31(木) 23:06:39.35 ID:???
>>253
俺もレコード数30万件程度のテーブルにLIKE検索かけてるけど4、5秒程度で終わる。
しかも今日の誕生日の人検索ってことは1日1回だけの検索ですむんでしょ?
それだけのためにindexは付ける必要はないと思います

257 :NAME IS NULL:2011/04/01(金) 00:50:01.16 ID:???
>>256
俺は同じ処理に、PHPがメモリ不足になるんだが・・・
さくらの専鯖だけど、PHPの書き方に問題あるのかな

258 :NAME IS NULL:2011/04/01(金) 01:03:38.97 ID:???
>>257
検索結果が多すぎるんだよ
LIMIT 0 , 100 で検索結果を小分けにしろ

259 :NAME IS NULL:2011/04/01(金) 01:14:07.95 ID:???
全部のフィールドにインデックスつければどんな検索でも快速になりますか?

260 :NAME IS NULL:2011/04/01(金) 01:16:00.87 ID:???
たった30万件で4,5秒って恐ろしいぐらいに遅いな
俺は1000万件以内で1秒以上は全てバグ扱いしてるわ

261 :NAME IS NULL:2011/04/01(金) 01:22:01.95 ID:???
>>260
1000万件でインデックスもつけずに常に1秒未満って、よっぽど素晴らしいマシンをお持ちなんですね。
羨ましい。

262 :NAME IS NULL:2011/04/01(金) 02:25:44.56 ID:???
1000万件のレコードだけどフィールドはidしかないからね

263 :NAME IS NULL:2011/04/01(金) 02:59:30.03 ID:???
素人設計の神髄を見た

264 :NAME IS NULL:2011/04/01(金) 05:12:25.09 ID:???
>>262
わろた

265 :NAME IS NULL:2011/04/01(金) 18:07:23.68 ID:???
僕の人生をMySQLに全て格納したい
僕が死んでも僕が成し遂げた偉業を後世に残したい
akiyan

266 :NAME IS NULL:2011/04/01(金) 18:29:15.92 ID:???
じゃぁ俺はPostgresに格納することにする

267 :NAME IS NULL:2011/04/01(金) 19:01:05.71 ID:???
>>265
リソースの無駄

268 :NAME IS NULL:2011/04/01(金) 20:16:53.05 ID:???
>>265
それならスキーマレスで柔軟なMongoDBを進める

269 :NAME IS NULL:2011/04/01(金) 20:18:46.55 ID:???
>>265
エクセルサイズの人生なのにもかかわらずか

270 :NAME 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の間、というようなのだけを出したいです。

271 :NAME IS NULL:2011/04/01(金) 22:10:39.34 ID:???
`birthday` BETWEEN '2011-02-15' and '2011-03-15' じゃだめなの?

272 :NAME IS NULL:2011/04/01(金) 22:13:49.58 ID:???
>>271
それじゃ赤ちゃんしか引っかからないじゃん

273 :270:2011/04/01(金) 23:09:06.89 ID:5mLjWvkY
自己解決しました

最小の生年と最大の生年を取得して、
その間をforでまわして
$horobetween = $horobetween." or `birthday` BETWEEN '$i-$date' and '$i-$date'";
($iが最小の生年から最大の生年まで増えていく)
みたいにやってwhereを複数にすることにしました

274 :NAME IS NULL:2011/04/02(土) 00:57:40.91 ID:???
Drizzle 1.0 と MySQL 5.5 はどっちが強い?

275 :NAME IS NULL:2011/04/02(土) 01:01:50.93 ID:???
プライマリーキーをIDに設定して
EXPLAIN SELECT ID FROM table WHERE data IS NOT NULL
とやったらTypeがALLになったんですが、このまま使っても問題ないでしょうか。
もっといい方法あったら教えてほしいです。

276 :NAME IS NULL:2011/04/02(土) 01:55:13.03 ID:???
一人の初心者(自力で学習する気力を持たないタイプ)が、とことん楽して解決しようとする場に・・・

277 :NAME IS NULL:2011/04/02(土) 01:57:38.03 ID:???
>>276
いまさら
新参かい?

278 :NAME IS NULL:2011/04/02(土) 03:13:46.68 ID:???
>>275自己解決しました。
複合インデックス貼ったらインデックス使われました。お目汚しすみません。

279 :NAME IS NULL:2011/04/02(土) 15:31:01.42 ID:???
>>276
なんでIT系の古い奴ってこういう考え方してるやつが多いんだろ
だから優秀な人間がみなIT系から逃げていく。結局土方レベルの人間しか育たない。
基本的な技術はストレートに答えを教えてやるほうが先につながっていくのにな

280 :NAME IS NULL:2011/04/02(土) 16:41:26.98 ID:???
>>279
なんで今時の若造ってこういう考え方してるやつが多いんだろ
自分で考えて解決しようという気構えが見られない。そんな奴は結局使い物にならない。
基本的な技術は自分で本でも読めばマスターできる。その程度のことをいちいち人に聞いてるようでは先はない。

281 :NAME IS NULL:2011/04/02(土) 17:22:25.44 ID:???
>>280
底辺のおまえがゆっても説得力がない

282 :NAME IS NULL:2011/04/02(土) 17:48:34.31 ID:???
>>281
×ゆっても
○いっても(言っても)

日本語もまともに使えないようなガチゆとりはこれだから

283 :NAME IS NULL:2011/04/02(土) 20:04:00.30 ID:???
何れにしても、脊髄反射で >>276みたいに 自分で調べろ が頭をよぎる奴は
気を付けた方がよい。 明らかに2ちゃん脳である。 特にIT系板におおい2ちゃん脳である。

284 :NAME IS NULL:2011/04/02(土) 20:41:37.83 ID:???
俺も>>279側の人間だな
質よりも数。数が多ければ質の高い奴もいつのまにか現れる。いまのIT業界の産業構造は最悪だ
>>280のように技術の伝達もしないまま足の引っ張り合いばかりしてるから新しい技術や発想も生まれてこない。
いい発想やアイデア持ってる奴はたくさんいるのに、みんな離れてく。かなしいことですね

285 :NAME IS NULL:2011/04/02(土) 21:03:57.14 ID:???
>>283
かん派とあかん派じゃね?

286 :NAME IS NULL:2011/04/02(土) 21:35:39.85 ID:???
>>276
そういって若い奴が育ってこなけりゃ自分は新しい技術を勉強しなくても、でかい面してられるっていう作戦だろ?
うん、よくある、よくある。

287 :NAME IS NULL:2011/04/03(日) 00:05:48.06 ID:???
でもここ会社じゃないし。若い奴を育てる必要ないし。
若い奴が育つと俺の仕事なくなるし。

ということ

288 :NAME IS NULL:2011/04/03(日) 00:08:57.36 ID:???
>>284
いや、どの業界に行ったって一緒だからw
どんな質問にも簡単に答えてもらえ、自分で物事を考える必要がないような
くだらない業界に行きたいのならご勝手に。
IT業界の行く末を案じていただかなくても結構です。

289 :NAME IS NULL:2011/04/03(日) 00:18:32.05 ID:???
>>288
そうは言ってもヒントぐらいは出すよ。
じゃないと後継が育たないじゃん。

290 :NAME IS NULL:2011/04/03(日) 01:11:37.55 ID:???
ここは会社じゃないので後継を育てる必要がない
むしろ育たないほうがいい

291 :NAME IS NULL:2011/04/03(日) 01:12:40.78 ID:???
どうして?そうやってMySQLが発展していったり、使う人が増えればいいじゃん

292 :NAME IS NULL:2011/04/03(日) 02:39:26.91 ID:???
>>287-288
フリーソフトウェアやGPLについて、社会的貢献という視点でどう思われますか?

293 :NAME IS NULL:2011/04/03(日) 03:59:42.14 ID:kwd0MNCA
質問させてください。
http://q.hatena.ne.jp/1172390238
ここの3レス目に

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

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

ご教示いただけると幸いです

294 :NAME IS NULL:2011/04/03(日) 06:34:20.18 ID:???
>>293
!= の代替は X<n AND n<X 
ちなみにこれを括弧で囲みたくなると思うが、括弧の数も可能な限り減らすこと。

295 :NAME IS NULL:2011/04/03(日) 07:00:26.68 ID:???
>>291-292
2chのスレごときで社会的貢献とか語るのはおこがましいということに気づかないのか?
お前らは後継者である未来ある若者の代表じゃなく、ただのクズの集まりだと自覚せよ。

296 :NAME IS NULL:2011/04/03(日) 07:36:39.53 ID:???
>>295 2chのスレごときで…自覚せよ。


297 :NAME IS NULL:2011/04/03(日) 07:53:10.14 ID:???
>>296 2chでシゴいて…せよ。

298 :292:2011/04/03(日) 10:39:38.15 ID:???
>>295
そんな質問してないけどなぁ。 フリーソフトウェアやGPLについてどう思うか
質問してるんだが答えられないのかい?

299 :NAME IS NULL:2011/04/03(日) 10:46:19.63 ID:???
そうやって脈絡のない質問するからおまえは空気が読めないと周りから思われてるんだよw

300 :NAME IS NULL:2011/04/03(日) 10:54:40.71 ID:???
>>299=レス奉行

301 :NAME IS NULL:2011/04/03(日) 13:19:08.69 ID:???
>>299
あんた見聞狭そうだねーw 会社で虐げられてるんだろうけど掲示板だけじゃなく会社でも強く生きろよw

302 :NAME IS NULL:2011/04/03(日) 14:18:33.81 ID:???
春休みか・・・

303 :NAME IS NULL:2011/04/03(日) 15:43:06.44 ID:???
大学受験英語のスレに、「This is a book.のisって何ですか?」とか質問してこいよ、ゴミクズ。

304 :akiyan:2011/04/03(日) 19:17:04.88 ID:???
喧嘩はよくないと思います

305 :NAME IS NULL:2011/04/03(日) 19:22:01.13 ID:???
知恵袋、okweb、2ch、どれも同じくらい低レベル。
まだ2chには知識ある人がスレにいるからアホな質問には厳しい。

306 :NAME IS NULL:2011/04/03(日) 19:42:48.81 ID:???
>>303
isも知らないんだ・・・かわいそうに。
自分で質問する勇気が無くて他人任せですか?
だからゆとり世代とか馬鹿にされるんですよ。

307 :NAME IS NULL:2011/04/03(日) 19:44:07.08 ID:???
質問が低レベル杉だということを忘れてないか?
誰しも迷う問題であったり、間違えやすい事だったりすれば、初歩的な質問でも人から教わってもいいと思う。
だが、ここ数日沸いて出た質問者は、ただ単にラクしたいだけとしか思えないほど低レベルだ。

空気読めずに、まだ質問してやがるしな

308 :akiyan:2011/04/03(日) 20:07:32.25 ID:???
カリカリしなさんな

309 :NAME IS NULL:2011/04/03(日) 21:18:46.95 ID:???
>>303
それは哲学入った質問だろハゲ

310 :293:2011/04/04(月) 02:22:03.10 ID:ORXRnSlM
>>294
ありがとうございます。けっこう面倒なことになりそうなんですね・・
自分が今までやってきた中では!= の代替として X<n AND n<X を使うようなのって
見たことなかったのですが、結構これって常識なのでしょうか?

311 :NAME IS NULL:2011/04/04(月) 04:25:14.34 ID:???
↑ほんとコイツ空気読めねえな・・・

質問内容はバカだし

312 :NAME IS NULL:2011/04/04(月) 07:00:02.71 ID:???
じゃぁほっとけばいいだろ。
そうやって初心者をいじめて楽しいのか?
ちょっと知識が着いたらすぐに図に乗りやがって。最近の若者はこれだから全く。

313 :NAME 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 
>ちなみにこれを括弧で囲みたくなると思うが、括弧の数も可能な限り減らすこと。

だれも突っ込まないのか?

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

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

デフォルトは変更できませんので、iniファイルを変更することなく、
ファイル出力をコマンドラインから変更したいのですが、
どのように指定すればいいのでしょうか?

315 :NAME IS NULL:2011/04/04(月) 12:18:54.59 ID:MneC9twQ
データを全件取得場合は以下のsqlをどのように書き換えればよいでしょうか

SELECT * FROM `{TABLE_NAME}` LIMIT 0, 30

316 :NAME IS NULL:2011/04/04(月) 12:22:26.54 ID:???
解決しました
LIMITから後を削除したら取得できました

317 :NAME IS NULL:2011/04/04(月) 12:29:14.60 ID:???
PC知識が付いてくると、自分は偉いんだ と勘違いし始める人間は多い。
自分はそうならないようにしたい。
プロ野球選手も飲み屋に行けばただのおっさんなのですよ。

318 :NAME IS NULL:2011/04/04(月) 13:14:09.02 ID:???
>>317
自己弁護するな アホのくせに

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

自分が偉いとかいうハナシじゃねえよ
オマエがアホ過ぎるだけだ

319 :NAME IS NULL:2011/04/04(月) 14:12:37.28 ID:???
>>317
アホを育てる意義を感じてる奴もいるようだ
そんなアホ担当が答えてくれるさ

320 :NAME IS NULL:2011/04/04(月) 14:25:17.31 ID:???
>>318
掲示板に よくこんなアホな文面書き込めるよなぁ。 コツ教えてくれよ

321 :NAME IS NULL:2011/04/04(月) 14:52:03.26 ID:???
>>302以下無限ループ

322 :NAME IS NULL:2011/04/04(月) 14:56:56.06 ID:???
どうあっても他人に答えを求める低レベル脳君が、ついに暴走し始めたようだな。

さらにまた「教えてくれ」ときた。

323 :NAME IS NULL:2011/04/04(月) 15:23:55.86 ID:???
だからな、「教えて」って言う奴には教えればいいし、
「教えたくない」って思えば教えなくて良いんだよ。
こんなの誰だって出来るだろ。

324 :NAME IS NULL:2011/04/04(月) 16:05:18.35 ID:???
さあ、アホ担当の方々
そろそろ出てきて、低レベル脳君にいろいろ教えてあげて下さい

今回はアホな文面を書くコツを教えてほしいそうです

325 :NAME IS NULL:2011/04/04(月) 16:57:01.60 ID:???
質問書きにくいからお願いだから荒らさないでください

326 :NAME IS NULL:2011/04/04(月) 17:18:03.00 ID:???
傍観するつもりでいたけどさすがに最近質問連発してる>>325もどうかと思う

327 :NAME IS NULL:2011/04/04(月) 17:39:50.10 ID:???
空気読めない彼は、さらに質問する気マンマンだしな・・・
質問内容はカスそのものだし困ったもんだ・・・

>>324
>今回はアホな文面を書くコツを教えてほしいそうです
低レベル脳君の質問文章そのものがアホなので、自身の文章が一番参考になるってオチだな

328 :NAME IS NULL:2011/04/04(月) 21:35:55.96 ID:???
sqlのsとpとlって、それぞれどういう意味ですか?

優しく教えてくれる人、なんて答えてくださる?

329 :NAME IS NULL:2011/04/04(月) 21:41:27.93 ID:???
>>326
本当に傍観してる人はこんなレスしてない

330 :NAME IS NULL:2011/04/04(月) 21:57:58.95 ID:???
>>328
ぐぐったら3秒で判ったぞ。

331 :NAME IS NULL:2011/04/04(月) 21:58:53.99 ID:???
>>328
sqlにpは含まれていません

332 :NAME IS NULL:2011/04/04(月) 23:33:11.25 ID:???
supper query language

333 :NAME IS NULL:2011/04/04(月) 23:35:41.41 ID:???
だからpは含まれてないってば。

334 :NAME 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は、何かの略語ではない」としている。

335 :NAME IS NULL:2011/04/05(火) 00:14:51.97 ID:???
バカだなあ、釣りの質問にまともに答えちゃって
よく読めってのpq

あんたら、おちょくられてるのに気がつかないの?

336 :NAME IS NULL:2011/04/05(火) 11:08:38.64 ID:???
>>335
あんたこそ、人を疑うのは良くないことだよ。
このスレで釣りの質問をする人なんているはずがないじゃないか。

337 :NAME IS NULL:2011/04/05(火) 14:35:07.66 ID:???
低レベル過ぎる質問の数々が、釣りそのものなんだけどね テヘッ

338 :NAME IS NULL:2011/04/05(火) 15:05:32.97 ID:???
むしろ、高レベルの質問が未だかってあったのだろうか

339 :NAME IS NULL:2011/04/05(火) 17:30:48.23 ID:???
じゃぁ試しに何か高レベルな質問してみてよ

340 :NAME IS NULL:2011/04/05(火) 19:30:09.34 ID:???
いいのか? 死んでもしらんぞ?

341 :NAME IS NULL:2011/04/05(火) 19:50:48.59 ID:???
何このくだらない会話

342 :NAME IS NULL:2011/04/05(火) 19:56:30.67 ID:???
イヤなら見なきゃ良いだけのもんだろよ
理解しろっての

343 :NAME IS NULL:2011/04/05(火) 20:02:51.94 ID:???
何を理解すればいいのか理解できないのですが

344 :NAME IS NULL:2011/04/05(火) 22:40:34.13 ID:???
教えたくなければ教えなければいいだけ!
とか、当たり前の事をゴチャゴチャ言いたがる奴だから察してあげて

345 :NAME IS NULL:2011/04/05(火) 23:39:04.82 ID:???
言いたがるだけなら放っておけばいいが言ってしまったら放っておけない性分です

346 :NAME IS NULL:2011/04/07(木) 12:04:10.79 ID:???
役に立たないレスばっかり

347 :NAME IS NULL:2011/04/07(木) 12:38:45.98 ID:???
お前モナー

348 :NAME IS NULL:2011/04/07(木) 12:53:56.72 ID:???
MLに
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/15553
こんなゴミ流れてると思ったらスレも酷くてワロタ。
こいつも釣りなのか?

349 :NAME IS NULL:2011/04/07(木) 15:18:33.55 ID:???
どうりでこのスレにキチガイが多いわけだ

350 :NAME IS NULL:2011/04/07(木) 17:26:01.45 ID:???
お前らモナー

351 :NAME IS NULL:2011/04/07(木) 18:56:16.12 ID:???
おっさんって何で場違いな所で身の上を話したがるんだろうな

352 :NAME IS NULL:2011/04/07(木) 19:00:37.03 ID:???
おっさんだから。先が無いから。昔の栄光だけが心の支えだから。

353 :NAME IS NULL:2011/04/07(木) 19:59:19.58 ID:???
正直どんなに困っていようと軽く困っていようと、質問内容がきちんとしてればそれでいいんだがなぁ。


354 :NAME IS NULL:2011/04/07(木) 20:08:13.44 ID:???
つべこべ言わずに黙って回答すりゃいいんだよクズが

355 :NAME IS NULL:2011/04/07(木) 20:27:09.49 ID:???
あのキチガイと同系列の発言キターw
ttps://lists.ubuntu.com/archives/ubuntu-jp/2009-December/002425.html
類友?ご本人?w

356 :NAME IS NULL:2011/04/07(木) 20:33:27.48 ID:???
っていうか、適当に持ち上げて旨くその回答者を乗せて使うってのも知恵だよ。
旨く乗せれば無駄にプライド高いから頑張ってくれるだろ?
そういうのをうまく使えないのは優秀ではないよね。

357 :NAME IS NULL:2011/04/07(木) 21:42:09.52 ID:???
>>351
逆に言えば若年は経験も浅く、結果がまだ出ていなかったりで 話すほどのものがたいしてない

358 :NAME IS NULL:2011/04/07(木) 21:52:54.63 ID:???
荒らしてるのは質問してる人でも回答してる人でもないんだな
プライドだけが高い人が上から目線でスレを汚しているだけ
高レベルな会話がしたいのならレベルの高い人が集まる場所に行けばいいよ

359 :NAME 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 したい

と、思うのは私だけでしょうか?


361 :NAME IS NULL:2011/04/07(木) 22:55:12.70 ID:???
お前も文句書いてる件

362 :NAME IS NULL:2011/04/08(金) 03:38:26.98 ID:???
俺は、おめぇらみたいなパソコンオタクじゃねぇ。

363 :NAME IS NULL:2011/04/08(金) 05:36:04.42 ID:???
>>362
普通の奴が言ってもだめだよー。キチガイジジイがテメェ棚に上げて見下す視線が笑いどころなんだからw
流石に「お前みたいな頭の悪いキチガイじゃねぇ!」って言い返したくなるわなw
詳しくなくても私信をMLに投げるか?もう、常識とかってレベルでおかしい。
ttp://twitter.com/fcr1228
あわてて名前だけ変えてもねぇ?w自分のおつむ棚に上げて酷ぇこといってるよw
まともに呟けもしないのにWebサーバにデータベースねぇ?w

364 :NAME IS NULL:2011/04/08(金) 10:44:35.48 ID:???
こういうのを見ると、MLとかより2chの方がいいと思える。

365 :NAME IS NULL:2011/04/08(金) 11:42:32.72 ID:???
大差はないだろ?あっちは「荒らされる」こっちは「荒れる」
でも、こういう荒れ方ってある意味平和だと思うよ。
誰も本当は困ってないから、質問であふれないんだからさ。
見た感じはよくないけどなw

366 :NAME IS NULL:2011/04/08(金) 14:19:50.91 ID:???
見た感じが良くないとか決め付けてんじゃねよw
そういうお前の書き込みが荒らしだと自覚しろ

367 :NAME IS NULL:2011/04/08(金) 14:34:22.62 ID:???
>>365
個人的には「荒らされる」は不健全で「荒れる」は健全だと思ってる。
まあどうでもいいけど

368 :NAME IS NULL:2011/04/08(金) 14:50:20.80 ID:???
>>366
お前は何を言っているんだ?

369 :NAME IS NULL:2011/04/08(金) 14:55:51.82 ID:???
自分が知ってる事に対して質問する人を荒らし扱いするキチガイが1匹

370 :NAME IS NULL:2011/04/08(金) 15:06:31.82 ID:???
ガキの相手は疲れるぜwハ〜

371 :NAME IS NULL:2011/04/08(金) 15:07:30.50 ID:???
>>368
何を言ってもお前には無駄らしいな

372 :NAME IS NULL:2011/04/08(金) 16:29:58.28 ID:dnOIIUgb
インデックスの種類のUNIQUEの使い道がいまいちよくわかりません。
UNIQUEじゃなく、PRIMARY_KEYではいけないのでしょうか?
既にPRIMARY_KEYが存在しているけど、別のフィールドでユニークを保証したい場合に使うのでしょうか?

373 :NAME IS NULL:2011/04/08(金) 16:38:26.26 ID:???
SQLに関する質問全般を荒らしと認定す

374 :NAME 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を作るケースは
テーブルをきちんと正規化してればあまり発生しない、はず


375 :NAME IS NULL:2011/04/08(金) 17:26:58.15 ID:???
>>373
頼むからIPかコテハン付けて
あぼんしとくから

376 :NAME IS NULL:2011/04/08(金) 17:32:16.68 ID:???
>>375
誰がIP晒すかよw
テメェこそID出しやがれ

377 :NAME IS NULL:2011/04/08(金) 17:34:11.54 ID:???
オートインクリメントすると思うけどそれだとユニークじゃなくてプライマリキーじゃないとダメジャン

378 :372:2011/04/08(金) 17:43:57.27 ID:dnOIIUgb
ほとんどがPRIMARY_KEYで済むので、UNIQUEっていつ使うのだろうと思っておりました。
NULLを格納したい場合に使うのですね。
と、同じ会員IDを登録できない仕様のものがあるとして、通し番号はPRIMARY_KEY+AutoIncrement、つけるのなら会員IDはUNIQUEという認識でよろしいでしょうか?

379 :NAME IS NULL:2011/04/08(金) 17:45:04.85 ID:???
>>375
俺のIP(アドレスな)は

127.0.0.1

だ。頼むからクラッキングとかしてこないでくれよ。

380 :NAME IS NULL:2011/04/08(金) 17:50:34.73 ID:???
>>379
ひゃっはー よし、いまそのアドレスでアクセスしたらネットワークドライブを見つけたぞ
FORMATされて泣きついてきてもオレはもう知らんからな

381 :NAME IS NULL:2011/04/08(金) 19:40:23.37 ID:???
>>378
よろしいです

382 :NAME IS NULL:2011/04/08(金) 22:45:17.14 ID:???
>>380
よろしいです

383 :NAME 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環境下で使用しているのが問題なのでしょうか。
よろしくお願い致します。

384 :NAME IS NULL:2011/04/09(土) 00:43:01.25 ID:???
>>383
$mysql5 -u root -p
でもだめ?

385 :NAME 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 しか見つけることができませでした。
よろしくお願い致します。

386 :NAME IS NULL:2011/04/09(土) 07:41:24.68 ID:???
>>385
自分もmacportsでいれたけど問題ないな。
たしか、起動オプションでパスワード認証をスキップするオプションがあったはず。

387 :NAME 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を起動するとパスワードなしでログインできるようになるので、

とかやってみたら?

388 :NAME IS NULL:2011/04/09(土) 10:58:37.64 ID:???
>>385
いや、既にパスワードが設定されてるんだろ?
インストール時か直後に何か設定した記憶は無いの?
mysqladmin にしたって現在設定されているパスワードを入力しなきゃ
新しいパスワードには変更できないんだから Access denied になって当然

389 :NAME 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)
となっております。
何かコピペしたときにデータが入っており、そのデータが引き継がれてしまっているのかなと思いきや、ユーザーが一つも入っていなかったという落ちでした

みなさま、ご教示ありがとうございました。

390 :NAME IS NULL:2011/04/10(日) 01:07:59.08 ID:???
インストールの仕方によっては初期にuserが全く登録されないなんてことがあるのか。
聞いたこと無いな。

391 :NAME 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テーブルの設定が必要になったからです。

392 :NAME IS NULL:2011/04/10(日) 16:46:52.72 ID:???
なるほどね

393 :293:2011/04/10(日) 20:42:45.47 ID:tzyV+5ID
>>310
>>313
どなたかレスいただけると幸いです。

394 :NAME IS NULL:2011/04/10(日) 23:27:46.18 ID:???
突っ込んだら負けに見えるが
X<n AND n<X ではなくて X<n OR n<X


395 :NAME IS NULL:2011/04/11(月) 09:29:50.55 ID:???
293はまじで分からなかったのか?釣りと信じたいw

396 :NAME IS NULL:2011/04/11(月) 09:51:10.83 ID:???
>>390
それが普通だと思ったが。

397 :NAME IS NULL:2011/04/11(月) 11:34:36.48 ID:???
rootもないんだっけ?

398 :NAME IS NULL:2011/04/11(月) 12:21:22.69 ID:qVCbLHf1
テーブルの照合順序(文字コード)を一括変換したいのですが、
ググってもひとつずつ変更する方法しかありません。
一括で変更できないのでしょうか?5.0.67を使っています。

399 :NAME IS NULL:2011/04/11(月) 12:47:43.16 ID:???
>>398
照合順序を変えた新しいテーブルを作ってデータを移すのが早いんじゃない?

400 :NAME IS NULL:2011/04/11(月) 12:49:11.45 ID:???
あ、ごめん。複数のテーブルを、って話か。

401 :NAME IS NULL:2011/04/11(月) 16:48:01.58 ID:NUeUTNL+
テーブル member

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

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

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

こんな感じで結果を得たいのです
わかりにくくてすみません…。

402 :NAME IS NULL:2011/04/11(月) 16:56:56.94 ID:???
姓・名・姓名で3回select回せば?

403 :NAME IS NULL:2011/04/11(月) 16:57:21.26 ID:???
インデックス使われないからあまりやりたくないけど
select * from member
where 姓 = '安部' and (名 is null or 名 = '晋三')
でいいんじゃないの

404 :NAME IS NULL:2011/04/11(月) 17:00:47.52 ID:???
> 「阿部」+「晋三」で検索、結果 1
晋三が見当たらないんですが

405 :NAME IS NULL:2011/04/11(月) 17:43:38.76 ID:???
だから、何?

406 :NAME IS NULL:2011/04/11(月) 17:51:03.16 ID:NUeUTNL+
>>403
それでいけそうです。ありがとうございます!

407 :NAME IS NULL:2011/04/11(月) 17:58:07.62 ID:???
where 性=’性条件’ AND 名=’名条件’

だけでいんじゃねーの。空白は空白

408 :NAME IS NULL:2011/04/11(月) 18:03:16.85 ID:???
性条件って何?童貞とか?ww

409 :NAME IS NULL:2011/04/11(月) 20:12:09.37 ID:???
>>408 私はあなたをSuitonしたいと本気で思いました。

410 :NAME IS NULL:2011/04/11(月) 20:38:40.60 ID:???
>>409 そうですか。それならば謝罪いたしましょう

411 :NAME 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フィールドにインデックスを張りたいのですがこの制約に引っかかってしまうので困っています

412 :NAME IS NULL:2011/04/12(火) 17:38:18.90 ID:???
MyISAMならFULLTEXTにすればいいんじゃないか

413 :NAME 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));

414 :NAME IS NULL:2011/04/12(火) 23:19:09.60 ID:???
>>413
ありがとうございます!

415 :NAME IS NULL:2011/04/13(水) 10:44:32.60 ID:???
文字列のお尻で高速に検索かけたいときはどうしてますか?

416 :NAME 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/')

417 :NAME IS NULL:2011/04/13(水) 13:12:19.24 ID:???
>>415じゃないけど、LIKE REVERSE('%/db/1295436346/') で前方一致になるからindexが効くという認識でよい?

418 :NAME IS NULL:2011/04/13(水) 16:12:52.44 ID:???
>>417
YES

419 :NAME IS NULL:2011/04/13(水) 18:42:53.61 ID:???
>>418
Thank you, baby!

420 :NAME IS NULL:2011/04/13(水) 19:01:45.24 ID:???
お尻を責めるならあらかじめひっくり返しておけ
ということか。万事に通ずる法則だな。

421 :NAME IS NULL:2011/04/13(水) 19:20:36.17 ID:???
一万件も同様の事があると思えんw

422 :NAME IS NULL:2011/04/14(木) 16:01:32.32 ID:hMS2SY+z
質問です
mysqlって何件くらいのデータ数で重くなりますか?
カラムにもよると思いますがおおよその答えでいいのでお願いします。

423 :NAME IS NULL:2011/04/14(木) 16:30:58.56 ID:???
カラムによります。

424 :NAME IS NULL:2011/04/14(木) 17:59:29.91 ID:???
>>422
1件より2件の方が重いです。

425 :422:2011/04/14(木) 20:32:50.06 ID:hMS2SY+z
まあ答えるの難しいよね
なんて質問したらいいのかな
でも言いたいことはわかるよね?

426 :NAME IS NULL:2011/04/14(木) 20:51:15.72 ID:???
>>425
適切な例を示せばいいんだよ。

そうすれば今度は「実測しろ」って言われるから。

427 :NAME IS NULL:2011/04/14(木) 22:07:37.76 ID:???
とりあえず、メモリに入り切るかどうかだろ。

428 :NAME IS NULL:2011/04/14(木) 22:11:56.89 ID:???
>>422
沢山だと重い。少なければ重くない。

429 :422:2011/04/14(木) 22:54:11.36 ID:hMS2SY+z
>>426
実測とかそんな高等テクニック持ってないし
ググっても見つからないからここで聞いてる
例を出して聞くと揚げ足取られるからなかなか難しいんですよ
でもこれって誰もが聞きたいことじゃないかな?

430 :NAME IS NULL:2011/04/14(木) 23:00:55.05 ID:???
回答出てるじゃん、>>424とか>>428とか。
これじゃ不満なわけ?

431 :NAME IS NULL:2011/04/14(木) 23:16:07.87 ID:???
自分でやってみればいいのに
メモリやCPUによっても変わってくるし答えようが無い

432 :NAME IS NULL:2011/04/14(木) 23:30:28.80 ID:???
>>422
100万件ぐらいまでならたいしたこと無い
ってどこかの大規模サイトの人がゆってた

433 :NAME IS NULL:2011/04/15(金) 02:57:12.92 ID:???
何万件だろうが適切にindexが設定されてて単純なクエリーなら重くない。
今度はindexのサイズが問題になるが元のtableのレコード数だけで示すことはできない。

434 :NAME 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とか)だと、
ほとんどをメモリに乗っかるようにしておけば、何も考えなくても数百万件くらいなら余裕なんじゃなかろうか。

435 :NAME IS NULL:2011/04/15(金) 14:31:48.42 ID:???
3秒って、そりゃまた随分と遅いなぁ

436 :NAME IS NULL:2011/04/15(金) 14:36:04.22 ID:???
>>435
インデックス振らなきゃそんなもんだろ

437 :NAME IS NULL:2011/04/17(日) 16:25:50.37 ID:???
よくデータをメモリに全部乗っけるという表現がなされますが、具体的にはどうすればいいのでしょうか?
ストレージエンジンをMemoryにするわけでは無いですよね
MyISAMのバッファをデータサイズ以上に設定しておけばOSが勝手にやってくれたりするのでしょうか

438 :NAME IS NULL:2011/04/17(日) 18:29:15.37 ID:???
>>437
あぁ、それウソだから。
データを全部メモリに乗せるなんて現代の技術では不可能だから。
デマに惑わされないように気をつけたほうがいいよ。

439 :NAME IS NULL:2011/04/17(日) 22:03:15.08 ID:???
ORDER BYでDESCとASCが両方あるときはどうしたらいいの?

440 :NAME IS NULL:2011/04/17(日) 22:13:35.21 ID:???
ORDER BY a DESC, b ASC,c DESC

441 :NAME IS NULL:2011/04/17(日) 22:21:05.41 ID:???
トホホな質問が続きます

442 :NAME IS NULL:2011/04/17(日) 23:05:39.08 ID:???
>>441
http://www.tohoho-web.com/
を参照ください。

443 :NAME IS NULL:2011/04/17(日) 23:19:13.15 ID:???
質問端折り過ぎた
ORDER BYでDESCとASCが両方あるとき
インデックスが効かないんだけどどうしたらいいの?

444 :NAME IS NULL:2011/04/17(日) 23:27:07.02 ID:???
仮に、両カラムをDESCに揃えたらインデックス利くの?

445 :NAME IS NULL:2011/04/17(日) 23:48:00.42 ID:???
>>441
低レベルSQL講座が始まってんだよ
察してやれ

アホ担当の方、さあ出番ですよ
ガムバって

446 :NAME IS NULL:2011/04/18(月) 00:19:30.20 ID:???
知っているかたがいらしたら教えてほしいのですが、
UNIQUE キーは SELECT 文等でも使われるのでしょうか。

それとも、重複チェックに使われるだけで、
INDEX キーのようには使われないのでしょうか。

447 :NAME IS NULL:2011/04/18(月) 00:30:56.04 ID:???
>>446
MySQLでは使われる

448 :NAME IS NULL:2011/04/18(月) 00:32:13.22 ID:???
>>443
インデックス格納順にアクセスすることにより
ソート処理を省く最適化のことを言っているなら、
ASCとDESC混ぜたらどうしようもないと思う

449 :NAME IS NULL:2011/04/18(月) 00:41:50.82 ID:???
>>447-448
良く知りもしないで適当なこと言ってんじゃねぇよw

450 :NAME IS NULL:2011/04/18(月) 06:00:35.97 ID:???
至って普通のLAMP構成でアプリ動かしてますが
MySQL5.1.50 InnoDBプラグイン使用で
スローログを見てると単純にINSERTするだけのログテーブルのINSERTに時間がかかっています
これは何が原因なのでしょうか
レコード数は現在800万程度です

451 :NAME IS NULL:2011/04/18(月) 11:28:05.87 ID:???
>>447>>449
>>446 ですが、
UNIQUEキーは単純にレコードをさがすときには
使われないのでしょうか…?

452 :NAME IS NULL:2011/04/18(月) 12:29:40.57 ID:???
使わない手は無いと考えるはずだよ、MySQLの設計者としても。 >>451

なんか一回の問合わせで一つのテーブルにはインデックスは
一つしか使われないとか、なんかそういうのがあったような気がするんで、
実際使われるかどうかは、EXPLAINで確かめた方がええんじゃないか。

453 :NAME IS NULL:2011/04/18(月) 15:02:39.99 ID:???
>>452
だから中途半端な知識で適当なこと言ってんじゃねぇっつーの

454 :NAME IS NULL:2011/04/18(月) 15:24:26.85 ID:???
>>453
とりあえず中途半端な知識だと思うなら補強してあげればいいだろうに。中途半端なままだからテキトーなレスをするんだろ?

455 :NAME IS NULL:2011/04/18(月) 15:31:56.84 ID:???
ユニークな方ですね

456 :NAME IS NULL:2011/04/18(月) 15:41:22.30 ID:???
>>448
explainの結果の話ね
どうしようもないのかなぁ

457 :NAME IS NULL:2011/04/18(月) 15:50:00.21 ID:???
SELECT * FROM unko ORDER BY a DESC, b ASC;
ようするにこれのORDER BY最適化を実現したいわけだけど

数値なら、インデックス用に -つけた数値もこっそり入れて
ASC,ASCに揃えてソートするとかのズルも出来るんだけど
両方文字列だとお手上げだわ・・・

458 :NAME IS NULL:2011/04/18(月) 16:39:24.90 ID:???
>>457
文字列を文字コードで数値化して-つければいいじゃん
つーか、どのみち複数のindexキーに対するorder byではindexは無効だから。

459 :NAME IS NULL:2011/04/18(月) 20:32:47.80 ID:???
サーバー上のPHPMyAdminをローカルにもコピーしようと思って、
エクスポート->SQLで書き出して、
それをローカル側のSQLで実行するとタイムアウトしてしまいます
大きすぎるからかもしれません
どうするのがよいでしょうか?

460 :NAME IS NULL:2011/04/18(月) 21:33:31.38 ID:???
>>457
create indexはカラム毎にASC/DESC指定できるだろ。

461 :NAME IS NULL:2011/04/18(月) 22:23:54.04 ID:???
wikipediaの編集履歴のような物を付けたいのですが
どのようにしたらいいでしょうか?



462 :NAME IS NULL:2011/04/18(月) 22:46:34.35 ID:???
>>460
create indexのASC/DESCは無効だろうがw

463 :NAME IS NULL:2011/04/18(月) 22:47:21.82 ID:???
>>461
編集履歴を保存するw

464 :NAME IS NULL:2011/04/18(月) 23:28:32.28 ID:???
>>452-454
結局、UNIQUE キーは INDEX 使われる、
ということで間違いないでしょうか…?

465 :NAME IS NULL:2011/04/19(火) 00:15:56.50 ID:???
>>459
細かく書き出す方法があるので小分けにして何度かやる
あるいはデータを圧縮して書き出すと成功しやすい

それでもダメな規模ならmysqldumpとかで調べてください

466 :NAME IS NULL:2011/04/19(火) 00:48:32.09 ID:???
最近、ほんとアホな質問多すぎないか?

467 :NAME 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使ってる人、障害対策ってどうしてる?

468 :NAME IS NULL:2011/04/19(火) 01:41:57.28 ID:???
>>466
かといって467みたいにちょっと高度な質問には答えられないんでしょ?お高く止まってる場合じゃないって もっと危機感持てよsqlite3に抜かれるぞ?

469 :NAME IS NULL:2011/04/19(火) 02:13:49.41 ID:???
>>458
100文字使う予定なので無理です
あと、複数じゃなければ有効です
>>462
ですよね

470 :NAME IS NULL:2011/04/19(火) 08:35:44.94 ID:???
>>469
BLOBやascii_binとかのカラムに、文字列
バイトの補数データをいれとけば?


471 :NAME IS NULL:2011/04/19(火) 11:15:24.50 ID:???
>>470
100桁の数値として扱うってことか。なるほど。

472 :NAME IS NULL:2011/04/19(火) 12:32:15.50 ID:???
SQL質疑応答スレ
http://hibari.2ch.net/test/read.cgi/db/1299305530/l50

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

質問者がアホ過ぎて、どちらで質問すべきかすら分かってないと思うけど

473 :NAME IS NULL:2011/04/19(火) 15:41:01.01 ID:???
過去100レスくらいにはMySQL依存の質問しかないみたいだけど

474 :762:2011/04/19(火) 18:06:24.03 ID:4KoCmCJG
>>472
MySQL上級者スレってわけじゃないんだからどんな質問でもいいじゃん
そうやって初心者を排除していくと過疎化するだけだぞ

475 :NAME IS NULL:2011/04/19(火) 18:49:37.96 ID:???
>>472
じゃあお前早く467の質問に答えてやれよ
どうせ答えられないくせに上級者ぶって初心者馬鹿にしてスレの過疎化に貢献してんじゃねーよ

476 :NAME IS NULL:2011/04/19(火) 18:52:16.91 ID:pVcTtZv8
テーブル作成でint型のところに文字を入れて更新してしまい、
該当レコードが0になる問題が発生しました。

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

こういうミスを避ける為に、
テーブル側で、数字しか受け付けないような設定って出来ないでしょうか?

477 :NAME IS NULL:2011/04/19(火) 19:42:44.25 ID:???
制約

478 :NAME IS NULL:2011/04/19(火) 19:57:30.26 ID:???
>>476
STRICTモードでそうならないか?
テーブル単位ではないけどな。


479 :NAME IS NULL:2011/04/19(火) 21:02:34.28 ID:???
>>476
データ型

480 :NAME IS NULL:2011/04/19(火) 21:52:19.44 ID:???
mysqlにsighupを送信すると、mysqlは何をするのでしょうか?

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



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

大事なことはみんなマニュアルに書いてある
一度でいいから、意味がわからなくてもいいから、
最初から最後までマニュアルを読め

482 :NAME 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
にしてますが

483 :NAME IS NULL:2011/04/19(火) 22:46:56.86 ID:jwljFgPx
やっぱMySQL Cluster使ってる人少ないのか・・・

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

チェックポイントなるものがあって、ログはDB自体に入ってるようないないような。
引き続きMySQL Cluster の障害対策方法知っているかたいましたらヒントだけでも・・・


484 :NAME IS NULL:2011/04/19(火) 22:56:48.59 ID:pVcTtZv8
>>478,482
sqlモードっていうのを指定したら>>476のような問題は回避できるんですか?
今まで特に意識したことはありませんでした

>>476
それはintにしています。

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

sqlモードの件、非常に勉強になりました。ありがとうございます。

486 :NAME IS NULL:2011/04/20(水) 00:02:16.29 ID:???
お前ら俺の質問がスルーされてるんだけど、早く答えろよ

487 :NAME IS NULL:2011/04/20(水) 01:10:51.86 ID:???
>>486
レス番号を示せば答えてあげます

488 :NAME IS NULL:2011/04/20(水) 01:32:11.79 ID:???
>>437をお願いします


489 :NAME IS NULL:2011/04/20(水) 06:54:51.52 ID:???
>>450何かわかりませんでしょうか

490 :NAME IS NULL:2011/04/20(水) 09:12:08.94 ID:???
>>488
ストレージエンジンはMyISAMかInnoDB、mysqld起動後に

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

を打ち込んで、すべてのデータをOSのファイルキャッシュか
InnoDBバッファプールに読み込ませるというテクニック

491 :NAME 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も極端に小さくないかを確認する。

492 :NAME IS NULL:2011/04/20(水) 10:20:22.95 ID:???
そんな説明じゃ伝わらないな

493 :NAME IS NULL:2011/04/20(水) 10:58:30.38 ID:???
>>491
ていうかあれだけでわかるだろ普通

494 :NAME IS NULL:2011/04/20(水) 11:39:48.15 ID:???
あれで分かるよねヤッパ

495 :NAME IS NULL:2011/04/20(水) 15:06:17.60 ID:o2haFwx5
コマンドラインでデータベースにログインすると
unknown variable 'tmp_table_size=◯◯MB'
と出てしまいます。

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



496 :NAME IS NULL:2011/04/20(水) 15:10:05.72 ID:???
>>495
ログインしたときの画面表示を省略しないでそのままコピペしてみて

497 :NAME IS NULL:2011/04/20(水) 16:29:19.67 ID:???
>>495
使えません。いじった設定ファイルは元に戻してください。
バックアップを取って無かったなら市ね。

498 :NAME IS NULL:2011/04/20(水) 17:06:22.96 ID:???
WordPressがMySQLでしか動かないからしぶしぶMySQLを使ってるが
早くこんなクズ共のいるスレから移動したい

499 :NAME IS NULL:2011/04/20(水) 17:40:34.71 ID:???
Postgresスレはもっとクソだらけだがな

500 :495: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に関するアドバイスが出ていたので
使えるものかと思っていました。

バックアップは取ってあるから大丈夫です。


501 :495:2011/04/20(水) 17:54:20.83 ID:???
MySQLAdminじゃなかったphpMyAdminでした
おはずかしい。

502 :NAME IS NULL:2011/04/20(水) 17:58:39.67 ID:???
>>500
tmp_table_size って mysqld のパラメータであって
mysql client のパラメータじゃないよね。
[mysql] とかで設定してるだけじゃないかな

503 :495:2011/04/20(水) 18:14:27.87 ID:???
>>502
おっしゃるとおりでした。
[mysql]に設定していました。

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

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


504 :NAME IS NULL:2011/04/21(木) 00:32:48.77 ID:???
DELETE FROM MySQLスレ WHERE user = アホ

505 :NAME IS NULL:2011/04/21(木) 00:39:52.82 ID:???
オンラインマニュアルを本にして売ってくれんもんかねえ。

506 :NAME IS NULL:2011/04/21(木) 00:43:09.75 ID:???
逆行

507 :NAME IS NULL:2011/04/21(木) 01:17:34.04 ID:???
PDFあるよ
http://dev.mysql.com/doc/


508 :NAME IS NULL:2011/04/21(木) 01:23:16.22 ID:???
紙で読みたい

509 :NAME IS NULL:2011/04/21(木) 01:25:49.39 ID:???
キンコーズ持ってって印刷から製本までしてもらえるよ

510 :NAME IS NULL:2011/04/21(木) 01:36:33.48 ID:???
オライリーブランドでマニュアル売り出せば、危篤な方が大量に買ってくれそうだ。

511 :NAME IS NULL:2011/04/21(木) 05:57:07.13 ID:0m0MMwnf
質問させてください

phpmyadinでcsvファイルをインポートするときに、
上からcsvファイルに記述した順にインポートしてほしいのですが、
csvファイルで記述した順にインポートされません
なぜか順番が違います
どうしたらいいのでしょうか?

512 :NAME IS NULL:2011/04/21(木) 08:11:49.80 ID:???
>>511
そもそもMySQL自体が、入れたときの順番で出すという仕組みになってない。
OracleもPostgreSQLも一緒。順番は適当。
何かの順番で出したければSELECT文にORDER BY句をつけること


513 :NAME IS NULL:2011/04/21(木) 08:24:40.82 ID:0m0MMwnf
>>512
そうだったんですか、なんだか不思議ですね
どうもありがとうございました

514 :NAME IS NULL:2011/04/21(木) 10:23:48.38 ID:???
>記述した順にインポートしてほしいのですが
こういう感覚のズレは、センスのなさの現われだなw
こんなアホな思考回路持った奴、学生でもいねえよ

515 :NAME IS NULL:2011/04/21(木) 10:41:29.91 ID:???
>>514
おまえちょっと口閉じてろ

516 :NAME IS NULL:2011/04/21(木) 10:43:45.42 ID:???
>>514
プログラミングとか慣れてなきゃ当然の感覚だろうに。どうでもいいトコ突付いて蔑むな。

517 :NAME IS NULL:2011/04/21(木) 11:13:15.33 ID:???
>516
>当然の感覚だろうに
自己弁護しなさんな
これを当然と捉えるお前って、自分はバカですって言ってるようなもんだぞ
アホと同レベルってこった

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

ネタ帳に追加しとくわ

518 :NAME IS NULL:2011/04/21(木) 11:46:44.50 ID:???
joinするだけで200msかかってんだけどどうすれば早くなりますか?
indexは張ってあって1万件くらいです

519 :NAME IS NULL:2011/04/21(木) 11:51:54.78 ID:???
>>498
>WordPressがMySQLでしか動かないからしぶしぶMySQLを使ってるが
>早くこんなクズ共のいるスレから移動したい
自身の頭のレベルは棚に置き言いたい放題

520 :NAME IS NULL:2011/04/21(木) 12:45:31.01 ID:???
>>518
鯖のスペック書け
あと、MySQLに割り当て可能なリソースもだ

チューニングはそれからだ

521 :NAME IS NULL:2011/04/21(木) 13:06:16.29 ID:???
>>520
さくらのvps512MBです

522 :NAME IS NULL:2011/04/21(木) 13:37:34.23 ID:???
>>521
答えになってねえ

523 :NAME IS NULL:2011/04/21(木) 13:47:06.68 ID:???
>>518
どんなテーブル設計なんか分らんし。

524 :NAME IS NULL:2011/04/21(木) 14:50:42.34 ID:???
>>518
インデックスを 有効に働くように適切に設定すれば 速くなる

525 :NAME IS NULL:2011/04/21(木) 15:39:44.59 ID:???
>>519
何、WP更新するたびに一々他のDBに対応させる修正をしないといけないってか

526 :NAME IS NULL:2011/04/21(木) 16:03:07.30 ID:???
なんだかんだ言って、やさしい奴が多いな
あんな質問に答えようとしてる

ほっこりしたよ

527 :NAME 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() 
にするしかないのでしょうか?

528 :NAME IS NULL:2011/04/21(木) 19:40:13.94 ID:???
そりゃそうだろ

529 :NAME IS NULL:2011/04/21(木) 19:47:43.78 ID:???
>>528
いや、ちょっと待ってろ。 そうでもないことが判明した。

530 :NAME IS NULL:2011/04/21(木) 21:15:59.08 ID:???
二つ指定すればいいだけの話では?

531 :NAME IS NULL:2011/04/21(木) 21:58:42.14 ID:e9JnJWF0
自分では想像つきません・・。
どういうSQLか教えてください

532 :NAME IS NULL:2011/04/21(木) 23:24:46.26 ID:???
ただでは教えられへんなぁ

533 :NAME IS NULL:2011/04/21(木) 23:28:44.63 ID:???
>>527
データベース側じゃなくて、
プログラム側でランダムに1-30の中から1つ数字だしてオフセットにすれば?

534 :NAME IS NULL:2011/04/22(金) 00:43:32.98 ID:???
俺の清めた体で払いますので

535 :NAME IS NULL:2011/04/22(金) 02:55:11.44 ID:???
5分間煮沸消毒してください

536 :NAME IS NULL:2011/04/22(金) 20:19:14.08 ID:SnCFSXDp
初歩的な質問ですみません
ORDER BYした結果をGROUP BYするにはどうしたらいいでしょうか?
1行でお願いします

537 :NAME IS NULL:2011/04/22(金) 20:21:58.25 ID:???
副問い合わせる

538 :NAME IS NULL:2011/04/22(金) 22:48:22.73 ID:???
GROUP BYしてSORTするんじゃダメなのか?uniqとは違うから。

539 :NAME IS NULL:2011/04/23(土) 12:29:11.27 ID:???

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

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

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

innodb_buffer_pool_sizなどのの使用量も
512MBまで増やしているのですが・・・。

540 :NAME IS NULL:2011/04/23(土) 12:31:24.56 ID:???
3秒以上かかったら重大なバグと見なしてる俺には
どう見ても何かがおかしいようにしか見えない

541 :NAME IS NULL:2011/04/23(土) 12:37:23.07 ID:???
>>539
1000件じゃなくて100件とかはどうなの?


542 :NAME IS NULL:2011/04/23(土) 12:45:02.54 ID:???
>>539
> 40個のカラム

select でカラム絞れ

543 :539:2011/04/23(土) 12:54:11.18 ID:aAzoxdx1
>>540
ですよねー
かかりすぎですよね

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


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



SQLはPHP内に記述しているのですが、
PDOの設定とかも関係してくるのでしょうか・・・


544 :NAME IS NULL:2011/04/23(土) 13:08:04.48 ID:???
インデックス使われてないんじゃないの

545 :NAME IS NULL:2011/04/23(土) 13:19:28.23 ID:???
>SQLはPHP内に記述しているのですが、
>PDOの設定とかも関係してくるのでしょうか・・・

んじゃとりあえず、同等のSQLをMySQLから手打ちしてみたら?
それでも遅いかどうかでPDOが関係してるかどうか分るじゃろ。

546 :NAME IS NULL:2011/04/23(土) 13:25:42.43 ID:???
1件でも時間かかるって異常だなw

547 :539:2011/04/23(土) 13:47:11.59 ID:aAzoxdx1
>>544

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

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

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

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


>>546
ですよねー。私もそう思います。
何とかならないものなのでしょうか。。。。

548 :NAME IS NULL:2011/04/23(土) 14:01:21.74 ID:???
>>547
インデックス使われてなかったんだなw

549 :539:2011/04/23(土) 14:03:45.04 ID:aAzoxdx1
>>548
あ、まだわかんないっす。
今から調べてみようかとしているところです。



550 :NAME IS NULL:2011/04/23(土) 14:25:20.75 ID:???
書いてる暇あったら調べれば?
これだけ人巻き込んでおいて「調べてみようか」って何様?
そもそも遅いのを問題にしてるくせに初めから一度もexplainしてないとか有り得なくね?

551 :NAME IS NULL:2011/04/23(土) 15:21:45.74 ID:???
コマンドから同等のSQLを実行するときに
先頭にEXPLAINってつけるだけなんだぜ

552 :NAME IS NULL:2011/04/23(土) 15:23:11.79 ID:???
データが無いとexplainできない ってのは
構造的欠陥だと思うんだ

553 :539:2011/04/23(土) 15:25:23.46 ID:???
>>550

気を悪くしたのならごめんなさい。
explainもこちらに書き込んだ当初は知らなかったのです。
皆さんの知見にたよりつつ
並行して自分でも手探りで調べている状態です。


554 :NAME IS NULL:2011/04/23(土) 15:54:23.19 ID:???
で、結果は?

555 :539:2011/04/23(土) 18:59:02.98 ID:???
気にしてくれてる皆さん、
ありがとうございます。
ただ今、別件で外にいまして、まだ実行できておりません。ごめんなさい。
月曜までには必ず報告しますのでしばらくお時間をください。


556 :NAME IS NULL:2011/04/23(土) 19:47:31.25 ID:???
絶対に許さない

557 :NAME IS NULL:2011/04/23(土) 20:27:28.96 ID:???
>>555
とりあえず今日のパンツの色を教えてくれ

558 :NAME IS NULL:2011/04/23(土) 21:12:33.12 ID:???
赤紫とシャンパンゴールドのストライプに群青色のイチゴのプリントが入っています。
脱ぎたてが欲しい方は速達で送りますのでメールアドレスをお知らせください。

559 :NAME IS NULL:2011/04/24(日) 16:47:36.03 ID:???
色ややこしいわw

560 :NAME IS NULL:2011/04/24(日) 19:34:28.37 ID:???
>>510
奇特

561 :NAME IS NULL:2011/04/24(日) 19:40:10.24 ID:???
>>558
群青色のいちご、ってそりゃ別のベリーじゃないの?

562 :NAME IS NULL:2011/04/24(日) 20:18:24.20 ID:???
>>510
危篤わろた

563 :NAME IS NULL:2011/04/24(日) 20:32:30.86 ID:???
>>562
ある意味あってるだろ

564 :539:2011/04/25(月) 12:08:39.90 ID:b0NRbWiN
おはようございます。

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

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

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

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

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

皆様にはたいへんお世話になりました。
まずはご報告まで。


565 :NAME IS NULL:2011/04/25(月) 15:34:14.69 ID:???
ほほう

566 :NAME IS NULL:2011/04/25(月) 22:48:03.49 ID:???
インデックスを貼る効果はこれぐらいあるんですよ〜って教科書に載りそうなお話 w

567 :NAME IS NULL:2011/04/26(火) 17:08:52.78 ID:???
インデックスを貼ってるカラムを削除する場合、
インデックスを削除してからカラムを削除しなけれなばならいのですか?
それともいきなりカラム削除すればインデックスも削除されるのでしょうか?

568 :NAME 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)


569 :NAME IS NULL:2011/04/26(火) 18:55:12.71 ID:???
不思議でもなんでもない。それをするのがDBMSの役目。

570 :NAME IS NULL:2011/04/27(水) 01:49:52.66 ID:???
>>544は神

571 :NAME 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ということなのでしょうか。

ご教示いただけますと幸いです。

572 :NAME IS NULL:2011/04/27(水) 02:53:13.70 ID:???
見てるmysqlが違う

573 :571: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が
共存しているような状態になっているのでしょうか。

574 :NAME IS NULL:2011/04/27(水) 07:10:58.70 ID:???
>>571
どちらも正しい
mysql --version はmysql のバージョン
select version() はmysqld のバージョン
mysqld は 5.0.77 なのでRENAME DATABASE はできませんねん

575 :NAME 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
としてみましたが、うまくいかないようです。

576 :571:2011/04/27(水) 15:12:45.75 ID:???
>>574
ありがとうございます。
なるほど。mysqldがバージョンアップされてないんですね。

>>575さん同様、私も同じ方法でうまくバージョンアップ
できていないんですね。困りました。。

577 :NAME IS NULL:2011/04/27(水) 16:15:33.55 ID:???
困ったときはお互い様です。

578 :NAME 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

579 :571:2011/04/27(水) 23:19:34.31 ID:???
ありがとうございます。

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

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

5.5になったのですが、もしかして5.5ではRENAME DATABASEは
実装されていないのでしょうか?
だとしたら、DB名の変更は何か他に楽にできる方法はあります
でしょうか。

580 :NAME 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です

581 :NAME IS NULL:2011/04/28(木) 01:03:43.95 ID:???
5.1.23で廃止されたらしいな
http://dev.mysql.com/doc/refman/5.1-olh/ja/rename-database.html

582 :NAME IS NULL:2011/04/28(木) 01:04:18.16 ID:???
>>579
>>581

583 :NAME IS NULL:2011/04/28(木) 01:09:34.62 ID:???
>>580
DB_FETCHMODE_ASSOC を指定してるというオチじゃないだろうな

584 :NAME IS NULL:2011/04/28(木) 01:12:48.56 ID:???
>>583
次の行に
while ($row = $res -> fetchRow(MDB2_FETCHMODE_ASSOC)){
ってやって受け取ったデータを処理してます


585 :571:2011/04/28(木) 01:55:47.14 ID:???
>>581 >>582

廃止されてたんですね。
ありがとうございました。

586 :NAME IS NULL:2011/04/28(木) 02:57:09.00 ID:???
>>584
じゃぁサーバーとローカルで環境が違うからだろう。
その辺を具体的に書かなきゃエスパーでない限りわからんな。

587 :NAME IS NULL:2011/04/28(木) 12:20:19.68 ID:???
MySQL で DB サーバ上のシステム時刻をミリ秒またはマイクロ秒精度で
取得するにはどうしたらいいですか? そもそも TIMESTAMP 型が秒精度
なので SELECT CURRENT_TIMESTAMP() じゃどうしようもならんし。

588 :NAME IS NULL:2011/04/28(木) 13:19:06.36 ID:???
>>587
http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html

589 :NAME IS NULL:2011/04/28(木) 13:39:38.36 ID:???
>>587
ググったらこんなページ見つけたけど
http://d.hatena.ne.jp/download_takeshi/20071124/1195915196

590 :NAME IS NULL:2011/04/28(木) 13:41:14.67 ID:???
ユーザー定義関数でもいいけど、MySQLを呼び出す側のPHPとかからmicrotime渡したほうが早い気がする

591 :NAME IS NULL:2011/04/28(木) 14:23:27.68 ID:???
24時間365日動くシステムでMySQLを使っているのですが、
皆さんはバックアップはどの様にされてますか?

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

ストップできないシステムなので、
データフォルダをコピーするといったことが
難しいので、皆さんはどの様にされているか
教えて頂けないでしょうか?

592 :NAME IS NULL:2011/04/28(木) 14:29:50.04 ID:???
mysqldumpをcronで毎日実行して別サーバーへ転送してる
最新の状態ではないが最悪前日の状態には戻せる
mysqldumpでちゃんと復元できるよ

593 :NAME IS NULL:2011/04/28(木) 14:32:10.98 ID:???
mysqldumpで復元できるってのは、mysqldumpでバックアップしたデータでもちゃんと復元できるって意味な


594 :591:2011/04/28(木) 14:44:56.04 ID:???
なるほどです。
ありがとうございます。

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



595 :NAME IS NULL:2011/04/28(木) 14:59:09.52 ID:???
レプリケーションしてスレーブのハードディスクからスナップショット作ってる

596 :591:2011/04/28(木) 15:40:51.94 ID:???
なるほど。
レプリケーションを利用されているのですね。

今回はシステム規模も小さく、
サーバを1台しか用意できなかったので、
レプリケーションは選択肢から外しておりました。
今後の参考にさせていただきます。


597 :NAME IS NULL:2011/04/28(木) 20:15:35.43 ID:9EvrpqTs
phpmyadminをxamppにインストールしたんですけど、
いきなりパスワードを聞かれます
rootっていれて、パスを空でインしようとするとIDかパスが違うって言われるんですが、
初期設定ではなにをいれたらいいんでしょうか?

598 :NAME IS NULL:2011/04/29(金) 10:28:06.51 ID:???
>>597
空でいい

599 :NAME IS NULL:2011/04/29(金) 13:20:17.47 ID:???
横槍で申し訳ないが
mysqldumpってそこそこ時間かかるしバックアップ中はサイトにアクセス出来なくなるし
毎日mysqldumpって現実的な手段になるの?

600 :NAME IS NULL:2011/04/29(金) 14:15:08.29 ID:???
InnoDBならバックアップ中でもアクセスできる
MyISAMなら仕方ない

601 :NAME IS NULL:2011/04/29(金) 14:32:33.36 ID:???
サービス規模によるね
停止しても15秒程度なら問題無いとかね。

実際いくつかmysqldumpを朝4時頃回してる

602 :NAME 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が何件あるか取得したいだけなのですが、これでは遅すぎるので
もっと早く処理するいい方法あったら教えてください。よろしくお願いします。

603 :NAME 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の勉強をしなさい

604 :NAME IS NULL:2011/05/02(月) 03:29:40.32 ID:???
>>603
Group 使うのと distinct はどっちが早いんかな。
まぁ、自分で試すか。

605 :NAME IS NULL:2011/05/02(月) 09:46:20.52 ID:???
インデックスの有無も気にした方が良い

606 :NAME IS NULL:2011/05/02(月) 17:18:33.18 ID:???
SQL文を解釈して実行するプログラムはプログラミング言語を処理するコンパイラの様に
字句解析、構文解析といった処理を行ってるのかな?
コンパイラの作り方の本を読めば参考になるかな?
それとも全く別で関係ない?

607 :NAME IS NULL:2011/05/02(月) 18:54:45.01 ID:???
>>606
MySQLはインタプリタにbisonの字句解析が入ってるはず
(インストールするときにbisonがないって文句言われた)

608 :NAME IS NULL:2011/05/02(月) 19:13:06.61 ID:???
SQL文なんてプログラミング言語に比べたら解析簡単だろ
参考にはなるけどレベル高すぎると思う

とりあえず SQL 構文解析 で調べたほうがいい

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

>>607のいうとおり、MySQLは使ってる
ようなんだけど、それ由来の制限も
ドキュメントに書いてあったはず。
予約語がどうこうとかみたいな?


610 :NAME IS NULL:2011/05/02(月) 22:34:48.63 ID:???
MyPhpAdminみたらいいんじゃないの

611 :NAME IS NULL:2011/05/02(月) 22:35:19.50 ID:???
スマン関係ないか

612 :NAME IS NULL:2011/05/02(月) 22:40:19.31 ID:???
>>611
微塵も関係ないな

613 :NAME IS NULL:2011/05/03(火) 20:09:23.94 ID:???
phpMyAdminなら関係あるのか?

614 :NAME IS NULL:2011/05/03(火) 20:32:05.06 ID:???
あれはそのままSQLに渡してるだけじゃねーの

615 :NAME IS NULL:2011/05/03(火) 21:49:34.31 ID:???
>>614
一応ちょっと解析っぽいことはしてる

616 :NAME IS NULL:2011/05/03(火) 22:05:55.32 ID:???
「一応」「ちょっと」「解析っぽい」w

617 :NAME IS NULL:2011/05/04(水) 00:01:34.57 ID:???
何が笑えるんだろう??
結構的確な表現だと思うのだがー

618 :NAME IS NULL:2011/05/04(水) 00:25:49.79 ID:???
曖昧な言葉を3つも並べて何が「的確」だよw

619 :NAME IS NULL:2011/05/04(水) 00:28:46.21 ID:???
ソース見れば的確かどうかわかるのにね

620 :NAME 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も無用で利用されたパラメータの行は削除の方が良いんでしょうか。

621 :NAME IS NULL:2011/05/04(水) 13:36:08.71 ID:???
俺ならオートインクリで36進数使うかな

622 :NAME IS NULL:2011/05/04(水) 13:50:35.69 ID:???
>>620
ショートURLサービスは特許登録されていますから、手法が似てると侵害で訴えられますよ

623 :NAME IS NULL:2011/05/04(水) 15:51:37.43 ID:???
>>622
それでお金儲けしなきゃ問題ない

624 :NAME IS NULL:2011/05/04(水) 19:50:26.73 ID:???
>>623
金儲けしなかったら特許侵害してもいいのか。
知らなかった。
じゃあ、非営利団体はやりたい放題できるな。

625 :NAME IS NULL:2011/05/04(水) 20:49:27.31 ID:???
>>624
とりあえず>>623の揚げ足取りたかった事は理解したが、脊髄反射のそれは馬鹿にしか見えんぞ。

626 :NAME IS NULL:2011/05/04(水) 21:05:54.56 ID:???
それ揚げ足じゃねぇだろ

627 :NAME IS NULL:2011/05/04(水) 21:32:45.96 ID:???
>620が無料サービスしたせいで、ビジネス機会損失したら
余裕で損害賠償請求始めるわ

628 :602: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を取得

これで間違ってないでしょうか?よろしくお願いします。

629 :620:2011/05/05(木) 10:04:52.48 ID:zYH1Ia7Y
>>621
すみません、どうしてその方法を選んだのか良かったら教えてください

>>622
え!そうなんだ!?知らなかった…
既存の自分のサイトにだけリンクする機能として使おうと思ってるんだけどそれでもダメなのかな
うーむ、でも聞いて良かった。ありがとうございます

630 :NAME IS NULL:2011/05/05(木) 14:56:14.62 ID:???
>>629 冗談だボケ
まぁ本当に特許取ってるかも知れんけど俺は知らんよ

631 :620:2011/05/05(木) 15:21:54.71 ID:C4QwRBw+
>>630
そうなの?安心したー

あらかじめ20万行くらいのテーブルを作る件は、やっぱりプログラム(php)で
20万回insertするしかないんでしょうか?

632 :NAME IS NULL:2011/05/05(木) 16:00:46.55 ID:???
データを20万件作ってバルクインサートすればよろしいのでは?

633 :NAME IS NULL:2011/05/05(木) 20:33:54.84 ID:???
>>631
事前にINSERTが必要なのは異常。


634 :NAME IS NULL:2011/05/05(木) 22:31:52.16 ID:???
>>631
なぜ安心できるのか

635 :NAME IS NULL:2011/05/06(金) 00:48:08.50 ID:???
>>630
それは冗談とは言わんな。 嘘 と言うんだよ

636 :NAME IS NULL:2011/05/06(金) 01:08:12.78 ID:???
いずれにせよ、2chの書き込み「だけ」で判断するなと

637 :NAME IS NULL:2011/05/06(金) 04:56:52.24 ID:???
NAME IS NULLさん、ありがとうございます。
おかげで解決しました。

638 :NAME IS NULL:2011/05/06(金) 05:22:01.30 ID:???
うむ

639 :NAME IS NULL:2011/05/06(金) 09:01:11.00 ID:???
いいってことよ

640 :NAME IS NULL:2011/05/06(金) 09:12:07.18 ID:???
今後も精進してくれたまえ。

641 :NAME IS NULL:2011/05/06(金) 19:05:32.10 ID:5aOEnpcJ
1つのデータベースに、複数のストレージエンジンによる
テーブルを混在させるのは良くないのかな?
そういうことを書いたブログがあったんだけど…。

phpmyadminで見たら、innoDBのテーブルのレコード数が
マイナス?(「-3322」みたいな)で表示されてたりします。

642 :NAME IS NULL:2011/05/06(金) 19:11:54.74 ID:???
phpmyadminのバージョン上げろ

643 :NAME IS NULL:2011/05/06(金) 19:28:13.88 ID:???
>>642
上げてもかわらんだろ。
innodbはmyisamと違ってレコード数は実際に数えないとわからんから概算ってことだ。

そもそもphpmyadminでも、正しい数字ではありません、って注意書きある。

644 :NAME IS NULL:2011/05/06(金) 22:43:11.14 ID:5aOEnpcJ
>>643
なるほど、参考程度に見ておけってことですね。

645 :NAME IS NULL:2011/05/06(金) 23:17:11.44 ID:???
基本innoDBでfulltextキーはMyISAMだわ

646 :NAME IS NULL:2011/05/07(土) 12:22:24.32 ID:m1TpCaqb
mysqldumpslow とかその辺のツールを試したいんだけど、いろいろな解析を試してみるのに良いサンプル的なスロークエリログってどこかにない?
5.0 だから long_query_time = 0 も出来ないし、すぐに試せるログがあれば嬉しいんだけど・・・。
やっぱ 5.1 入れてテスト用 DB 作ってログ取得するしかないかな?

647 :NAME IS NULL:2011/05/07(土) 17:29:33.24 ID:???
>>646
スローなクエリをちょっと実行しちゃえば。

サブクエリとか
ストアドとか
文字列処理とか


648 :NAME IS NULL:2011/05/07(土) 17:29:57.68 ID:???
select sleep(10);
で、とりあえずスロークエリはすぐ出せる

649 :NAME IS NULL:2011/05/08(日) 12:40:39.09 ID:???
>>648が天才すぎてびっくりした。いやマジで。
なんつーか死にたくなってきたわ。

650 :NAME IS NULL:2011/05/08(日) 12:44:47.24 ID:???
こういう小ネタはいいな
俺も知らなかった

651 :NAME IS NULL:2011/05/08(日) 15:15:12.88 ID:???
スロークエリって何ですか

652 :NAME IS NULL:2011/05/08(日) 20:53:52.80 ID:???
スローなクエリにしてくれ

653 :NAME IS NULL:2011/05/09(月) 00:33:50.73 ID:WP+BCa3r
>>652 だめじゃん。

654 :NAME IS NULL:2011/05/09(月) 18:22:12.80 ID:ovU3C3FZ
ここで聞いていいのかわからんけど、SQLってのは常駐ソフトの一種で別のソフトからアクセスして使うものっていう解釈で合ってる?


655 :NAME IS NULL:2011/05/09(月) 18:44:24.01 ID:???
>>654
このスレでなら正解

656 :NAME IS NULL:2011/05/09(月) 18:53:41.08 ID:ovU3C3FZ
そうか、ありがとう

657 :NAME IS NULL:2011/05/09(月) 20:12:10.22 ID:???
>>654-656
ひでぇ会話w

658 :NAME IS NULL:2011/05/09(月) 20:35:46.26 ID:???
ちくしょう、つぼったww
電車の中で笑わせんな

659 :NAME IS NULL:2011/05/10(火) 16:39:08.30 ID:???
>>483
データノードを専用で3台 NoOfReplicas=3
SQLノードを専用で2台
マネジメントノードをしょぼいサーバーで専用で2台

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

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

でどうでしょう?

データノードが落ちてから復旧した場合、勝手に同期とって
マネージメントノードでOKとかでたら復旧成功とかでしょうか?


660 :NAME IS NULL:2011/05/10(火) 20:57:15.47 ID:???
なんだかんだ言って、全部一つのPCに納めちゃうのが楽

661 :NAME 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使ってくれますか?

662 :NAME IS NULL:2011/05/11(水) 12:01:43.54 ID:???
>>661
mysqlでは不可能

663 :NAME 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'

664 :NAME IS NULL:2011/05/11(水) 14:56:22.33 ID:???
>>663
dateをhidukeに変更する

665 :NAME IS NULL:2011/05/11(水) 14:57:11.01 ID:???
>>663
DEFAULT CURRENT_TIMESTAMP を削除する

666 :NAME IS NULL:2011/05/11(水) 15:19:51.95 ID:???
ttp://uploader.sakura.ne.jp/src/up39463.jpg
CURRENT_TIMESTAMPを消したら確かにエラーは出なくなったのですが
挿入時の日時を自動的に入れたいのでCURRENT_TIMESTAMPはどうしても使いたいです

667 :NAME IS NULL:2011/05/11(水) 15:22:18.44 ID:???
型のdateって所をTIMESTAMPに変えたら出来ました
お騒がせしました

668 :NAME IS NULL:2011/05/11(水) 17:37:02.05 ID:TXivELb9
すみません
5.1を使っているのですが、cactiやmuninはmysql5.5に対応していますでしょうか?


669 :NAME IS NULL:2011/05/11(水) 17:56:17.80 ID:???
>>668
対応しています

670 :NAME IS NULL:2011/05/11(水) 19:13:40.97 ID:???
>>669
無責任なこと言ってんじゃねぇよ
お前が作ったのかよ

671 :NAME IS NULL:2011/05/11(水) 21:07:13.75 ID:???
ウザイからYahoo!知恵袋で質問してくれる?

672 :NAME IS NULL:2011/05/11(水) 23:15:04.12 ID:???
>>670
はい。

673 :NAME IS NULL:2011/05/12(木) 01:09:50.36 ID:???
>>671
Yahoo!知恵袋で質問したところ、スレ違いと言われてこのスレに誘導されました。

674 :NAME IS NULL:2011/05/12(木) 01:21:27.30 ID:???
ウソをつくな

675 :NAME IS NULL:2011/05/12(木) 01:24:33.32 ID:???
ここの人って、MariaDBとかPercona Serverとか試したりしてる?


676 :NAME IS NULL:2011/05/12(木) 02:14:16.77 ID:???
ウザイからYahoo!知恵袋で質問してくれる?

677 :NAME 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


678 :NAME IS NULL:2011/05/12(木) 07:30:45.78 ID:???
>>677
uodateのsqlをよく見直せ

679 :NAME IS NULL:2011/05/12(木) 07:58:56.81 ID:lTT2AWNK
ああ…バッチ処理中の重複がありえるというのを失念してた…。
正直すいませんでした。

680 :NAME IS NULL:2011/05/12(木) 11:44:48.39 ID:???
カスが

681 :NAME IS NULL:2011/05/12(木) 11:49:29.95 ID:???
ガスか

682 :NAME IS NULL:2011/05/12(木) 21:27:04.31 ID:???
カズが

683 :NAME IS NULL:2011/05/12(木) 23:04:10.76 ID:???
ガズが

684 :NAME IS NULL:2011/05/12(木) 23:27:01.27 ID:???
トゥーッス!

685 :NAME 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

みたいなのがあったとき、「青森」かつ「丸紅」かつ「生」かつ「大」を商品テーブルから抜き出すにはどうすればよいですか?


686 :NAME IS NULL:2011/05/12(木) 23:37:37.74 ID:???
>>685
俺なら適切なクエリーでSELECTする

687 :685: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つしかレコードが帰ってきません

688 :685:2011/05/12(木) 23:55:12.34 ID:???
ごめんなさい、出力するphpが間違ってました

ああ・・・

689 :NAME IS NULL:2011/05/13(金) 00:42:54.51 ID:???
解決したわけね?

690 :685:2011/05/13(金) 01:02:12.58 ID:???
>>689
解決しました(´∀`)9 ビシッ!

691 :NAME IS NULL:2011/05/13(金) 01:10:54.73 ID:???
ザコを呼び込んだ奴、責任取れ
相手にするからこうなる

692 :NAME IS NULL:2011/05/13(金) 02:11:30.40 ID:???
>>691
鏡を見てから来いや

693 :NAME IS NULL:2011/05/13(金) 02:16:20.84 ID:???
テーブル・カラム名に全角かぁ。

694 :NAME IS NULL:2011/05/13(金) 03:48:38.16 ID:???
最近は全角が主流なんですが。
金融機関などの大規模DBでも殆どが全角ですよ。

695 :NAME IS NULL:2011/05/13(金) 04:31:46.97 ID:???
>>691
森へお帰り

696 :NAME IS NULL:2011/05/13(金) 08:43:49.58 ID:???
全角カラムって一見分かりやすそうだけど,似た漢字があったりするとかえって混乱するんだよね.

697 :NAME IS NULL:2011/05/13(金) 09:07:25.16 ID:???
>>694
まじで!?

698 :NAME IS NULL:2011/05/13(金) 09:21:49.56 ID:???
以前は半角カタカナが主流でしたが、全角漢字が利用できるようになって以来、
出来るだけ漢字を使わないとクライアントの偉いさんが納得してくれません。

699 :NAME IS NULL:2011/05/13(金) 10:18:09.62 ID:???
>>697
信じられないだろうが本当。
使ってみるとこれが意外に便利だったりする。

700 :NAME IS NULL:2011/05/13(金) 10:54:12.53 ID:???
関係無いけどエクセルのファイル名とかに漢字使う?


701 :NAME IS NULL:2011/05/13(金) 10:57:01.11 ID:???
>>700
それは普通に使うだろ

702 :NAME IS NULL:2011/05/13(金) 11:08:33.08 ID:Z7KNlo4p
SQLServerだったけど、とある証券システムでDBからテーブルからカラムから
全て日本語だったよ

703 :NAME IS NULL:2011/05/13(金) 15:39:56.16 ID:AYV0ieN1
全角をつかって不具合が出たりはしないものなのでしょうか?

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

いちいち日本語の単語から英語にするのに
頭使ってるのが馬鹿らしくなってきますね。

704 :NAME IS NULL:2011/05/13(金) 16:05:03.23 ID:???
>>703
最初に文字コードを決めてそれなりにテストを念入りにおこなえば
あとは特にトラブルはないな。
ただ記号文字、特に括弧とか〜系の文字は必ず避けてる。

705 :NAME 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が何故か起動しているような感じです。

これはどうしたら対処できるんでしょうか?
よろしくお願いします。

706 :NAME IS NULL:2011/05/13(金) 17:55:22.76 ID:???
>>705
ハードディスクがいっぱいだな。
エロ画像を放流してスペースを空けるんだ

707 :NAME IS NULL:2011/05/14(土) 01:31:15.61 ID:???
>>706
ありがとうございます。解決しました。


708 :NAME IS NULL:2011/05/14(土) 03:40:44.58 ID:???
>>706
>>707は偽者です。
エロ画像は削除してみましたが、どうやらエロ動画がディスク容量を圧迫しているようです。
でもこれを削除してしますと、またMXで入手するのは大変だし、どうしたらよいでしょうか。

709 :NAME IS NULL:2011/05/14(土) 17:27:16.28 ID:???
>>706
>>708 も偽物です。
本当に解決しました。エロ画像45GBとエロ動画280GB消しました。
今は記憶だけで抜けるので大丈夫です。
ありがとうございました。

710 :NAME IS NULL:2011/05/15(日) 00:27:05.26 ID:???
時系列で株価の終値のデータを持っています
前営業日の終値と比較してその変化率を出したいと思っています

やり方、色いろあるとおもうのですが、どうやるのがスマートですかね?

711 :NAME IS NULL:2011/05/15(日) 00:38:48.83 ID:???
正確にいうと、変化率を出して、それをテーブルに戻そうと思ってます

土日や、終値がない日が存在したりすることを考えると、
どうやったら効率がいいのか。。。

712 :NAME IS NULL:2011/05/15(日) 01:02:39.29 ID:???
営業日テーブルというのがまず必要かな。前の営業日を
SELECT max(date) FROM businessday where date < :today;
という感じで取る

713 :NAME IS NULL:2011/05/15(日) 09:51:05.98 ID:???
そういう感じですることにします

変数を宣言しようと思ったらお壊れて
DECLARE next_day date;
なにがいかんのやろ

714 :NAME IS NULL:2011/05/15(日) 10:59:10.79 ID:???
まさか、next_dayが予約語だとは

715 :NAME IS NULL:2011/05/15(日) 12:21:51.19 ID:???
WHILE @n_day <= '2010-03-31' DO

これって間違ってる?

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

SELECT aaa INTO bbb FROM ccc;

cccがユーザ変数だったのですが、ストアドプロシージャでは
テーブル名にユーザ変数が使えないんですか?


717 :NAME IS NULL:2011/05/16(月) 14:35:58.77 ID:???
初心者なんですが、例えば
idが3の列のデータを全部削除した場合、id 4をid 3につめるという方法はあるのでしょうか?

718 :NAME IS NULL:2011/05/16(月) 14:38:43.33 ID:???
>>717
本名の他に、芸名を付ければいいんじゃないの?

719 :NAME IS NULL:2011/05/16(月) 14:41:59.55 ID:???
deleteしたあとupdateでもしてろよ

720 :NAME IS NULL:2011/05/16(月) 15:11:15.60 ID:???
>>719
まじでそれでいけるの?

721 :NAME IS NULL:2011/05/16(月) 16:26:38.63 ID:???
>>720
ALTER TABLE table AUTO_INCREMENT=3;

722 :NAME IS NULL:2011/05/16(月) 16:38:43.92 ID:???
>>721は釣りで良いんだよな…

723 :NAME IS NULL:2011/05/16(月) 18:03:32.11 ID:???
はぁ?

724 :NAME IS NULL:2011/05/16(月) 18:16:11.95 ID:???
>>720
馬鹿ならしね

725 :NAME IS NULL:2011/05/16(月) 21:14:29.69 ID:???
4以上をすべて -1 すればいいだけじゃね。
ちょっと考えれば思いつくと思んだが。
プログラムってアイデア勝負だな。

726 :NAME IS NULL:2011/05/16(月) 21:31:05.31 ID:???
MySQLはそこでorder byとかやらないとキー重複でエラーになるんだっけ?

727 :NAME IS NULL:2011/05/16(月) 22:10:11.06 ID:???
>>726
ならぬ

728 :NAME IS NULL:2011/05/17(火) 05:11:06.54 ID:???
プライマリキーをオートインクリメントで設定すると
どんどん増えていくじゃないですか。
だからidをつめた方がいいのかなと思ったんであります。

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

この認識であってますか?

729 :NAME IS NULL:2011/05/17(火) 05:27:18.02 ID:???
>>725 馬鹿?
AUTO_INCREMENT付ければ勝手に連番付与してくれる

730 :NAME IS NULL:2011/05/17(火) 05:31:44.38 ID:???
>>728
RDBなんだから普通はIDが他のtableから参照されたりするだろ。
だから特定のtableのIDを詰めるようなことは行わない。
そもそもレコードを削除してしまうと情報が消えてしまうので
削除フラグを立ててレコードは残しておくことが多い。

731 :NAME IS NULL:2011/05/17(火) 05:53:12.88 ID:???
>>728
レコード削除でオートインクリメントカラムの数字を詰めたい・再利用したい ってのは
独学初心者の典型的な発想。
詰める必要はないし、データ管理という観点でも「詰めちゃいかん」のだよ



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

ではチャットみたいなやりとりもDBでは消さないで保存するシステムになってるのですかね?

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

734 :728:2011/05/17(火) 06:15:47.52 ID:???
>>733
>チャットをDBに保存する意味があるかどうかは

まさにこの部分なんですよ
何かしら一時的には保存してるわけでそれがDBに保存する場合、古いのは消していかないと
容量がどんどん増えていくんじゃないのかということで上記の質問をしたわけです。

735 :NAME IS NULL:2011/05/17(火) 08:46:52.32 ID:???
>>729
おまえが元コメ読んでない馬鹿だろ

736 :NAME IS NULL:2011/05/17(火) 10:05:27.53 ID:???
>>734
そういうのを必要に応じて消すというのはよくあるが
IDを振り直すというのはありえない
というのが結論

737 :NAME IS NULL:2011/05/17(火) 16:05:34.67 ID:???
>>728
どうしても空き番を再利用したいなら
オライリーのMySQL Cookbookのvol2に載ってるから
買って読むといいよ。

738 :NAME IS NULL:2011/05/17(火) 23:16:40.04 ID:???
>>735
>プログラムってアイデア勝負だな

馬鹿丸出しの文章恥ずかしくないの?

739 :NAME IS NULL:2011/05/18(水) 01:04:36.49 ID:???
>>738
一日遅れで随分離れたレスにツッコむお前が馬鹿丸出しだぞ。

740 :NAME IS NULL:2011/05/18(水) 07:24:14.79 ID:???
>>739
何て回答するか一日悩んだのだから仕方あるまい

741 :NAME IS NULL:2011/05/18(水) 13:28:42.56 ID:???
twitterじゃあるまいし昨日だろうが去年だろうがいいだろボケどもが

742 :NAME IS NULL:2011/05/18(水) 17:30:29.29 ID:???
そんなに長く考えてたらこのスレ終了しちゃうよ

743 :NAME IS NULL:2011/05/18(水) 17:58:39.48 ID:NDLQlcle
複数行をまとめてinsertするinsert文で、プライマリキーが被っているものはスルーして
かぶっていないもののみinsertする方法はありますか?

insert into table values (), (), ();
という形のSQLです。

744 :NAME IS NULL:2011/05/18(水) 18:23:05.91 ID:???
>>743
INSERT IGNORE
http://dev.mysql.com/doc/refman/5.1/ja/insert.html

745 :NAME IS NULL:2011/05/18(水) 20:36:09.15 ID:???
>>743
いちいち人に聞かずに少しは自分で調べろ

746 :NAME IS NULL:2011/05/18(水) 22:43:57.23 ID:???
>>745
ここで調べてるんだよ。何か悪いか?

って、本気で言われたことがある。

747 :NAME IS NULL:2011/05/18(水) 22:49:29.51 ID:???
自分で調べろと言って何か悪いか?

って、本気で言われたことがある。

748 :NAME 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

749 :NAME IS NULL:2011/05/19(木) 00:41:56.75 ID:???
バカを育てる事に意味があると思っている奴がいるんだ
そんなバカ担当にお任せしようじゃないの

750 :NAME IS NULL:2011/05/19(木) 01:00:55.43 ID:???
>>748
質問の意味が理解できません

751 :NAME IS NULL:2011/05/19(木) 01:10:06.72 ID:???
>>748
full scanがかかるのはしょうがないとして、hogeのカーディナリティが
高いのに対してsort_buffer_sizeが足りてないとか?

752 :748:2011/05/19(木) 03:08:45.76 ID:???
>>751
あー、sort_bufferか。ちょっと増やしてみる。
order by のソート速度が上がるかもしれない。
ありがとう。

753 :NAME IS NULL:2011/05/19(木) 07:43:42.84 ID:???
>>751-752
あなた方のやり取りの意味が理解できません

754 :NAME IS NULL:2011/05/19(木) 08:32:09.16 ID:???
大丈夫だ 問題ない

755 :NAME 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;
とうつとすべて条件が無視されすべて表示されてしまいます
いろいろ調べては見たのですが、これといった情報がわからず手を拱いております
お知恵を貸していただければ幸いです。

756 :NAME IS NULL:2011/05/19(木) 16:57:41.33 ID:???
「手を拱く」なんて難しい言葉を知っていますね!

757 :NAME IS NULL:2011/05/19(木) 18:11:59.42 ID:???
こんな漢字だとは知らなかった。

758 :NAME IS NULL:2011/05/19(木) 19:02:55.32 ID:???
書けなくても漢字変換してりゃ出てくる
それだけの事

759 :NAME IS NULL:2011/05/19(木) 20:25:21.87 ID:???
「漢字」じゃなくて「言葉(単語)」を知っていることに驚きました!

760 :NAME IS NULL:2011/05/19(木) 20:32:43.64 ID:???
>>755
文字コードがlatin1とかになってんじゃないの?

761 :NAME IS NULL:2011/05/19(木) 21:44:34.90 ID:???
文字コードがえらちょんぺじゃないか?とえスパ(ry

762 :NAME IS NULL:2011/05/20(金) 04:44:54.47 ID:???
>>760
レスありがとうございます
文字コードはすべてutf8で統一しております
たとえば%b%にすると妥当な検索結果を表示しますが、aという文字に対してだけselect以下のコマンドが
無視されるようです
>>756
お褒めいただき恐縮ですm(__)m

763 :NAME IS NULL:2011/05/20(金) 09:57:20.15 ID:???
>>762
>文字コードはすべてutf8で統一しております
show variables like 'char%';
で確認しましたか?
PHP等からアクセスするなら、PHPから上記SQLを発行して確認してね。

ところで「select以下のコマンドが無視される」ってどういう意味だろう。

764 :NAME 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以下のコマンドが認識できなくなった?のかは不明ですがそういう状況に陥りました。


765 :NAME 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
が機能していないということでは。

767 :NAME IS NULL:2011/05/20(金) 16:53:33.71 ID:???
プログラム側で
%a% あたりが特殊文字扱いされてるとかないのか?

768 :NAME IS NULL:2011/05/20(金) 17:37:40.37 ID:???
エスパー初心者ですが、sprintf が噛んでない?
'%%a%%' とやるとどうなりますか?

769 :NAME IS NULL:2011/05/20(金) 17:50:56.63 ID:???
DBに保存するデータを暗号化したいので、 AES_ENCRYPT使おうとしてるんだけど、
これって結局ソース読まれたら意味ないですよね。
平文で読めなくなるという気休め程度か…。
公開鍵暗号とかするの面倒そうだしなー…。

770 :NAME IS NULL:2011/05/20(金) 17:58:53.18 ID:???
>>769
なんで意味無いの?

771 :NAME IS NULL:2011/05/20(金) 22:08:38.55 ID:???
>>768
>%えらちょんぺ%を%a%にすると11件目以降が表示されてしまいます

他の人も書いてるけど、limit 0,10 が効いてないって意味?まぁそんなことがあるとは思えないけど。
結果の件数は何件表示されたの?10件以内なら正常な動作だと思うけどね

772 :NAME 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
.
.
.

とテーブルの上から全部取得してしまいます

773 :NAME IS NULL:2011/05/21(土) 01:20:25.78 ID:???
>>766
そうです・・・
>>767
mysql自体にそういう文字があるのかとおもい質問させていただきました
>>768>>771
a意外ならヒットする件数が10以上でも10件だけ表示してくれます
aだとヒットするしないにかかわらずテーブル全体を表示してしまいます・・・

774 :NAME IS NULL:2011/05/21(土) 06:26:21.37 ID:???
>>773
Mysql付属のclientから接続して同じクエリやっても結果一緒?

775 :NAME IS NULL:2011/05/21(土) 09:25:16.70 ID:???
>>772
ザク大好きなんやね

776 :NAME IS NULL:2011/05/21(土) 13:36:00.89 ID:???
ザクが大好きです。でもジムはもっと大好きです。

777 :NAME IS NULL:2011/05/21(土) 15:11:18.07 ID:???
>>773
repair table tsumiki_tbl;


778 :NAME IS NULL:2011/05/21(土) 15:19:51.92 ID:???
>>773
optimize table tsumiki_tbl;


779 :NAME IS NULL:2011/05/21(土) 15:20:23.60 ID:???
>>773
alter table tsumiki_tbl;


780 :NAME IS NULL:2011/05/21(土) 15:20:41.58 ID:???
>>773
delete table tsumiki_tbl;


781 :NAME IS NULL:2011/05/21(土) 19:26:01.29 ID:???
>>773
curieit table tsumiki_tbl;


782 :NAME IS NULL:2011/05/21(土) 19:26:46.31 ID:???
>>773
updeit table tsumiki_tbl;

783 :NAME IS NULL:2011/05/21(土) 20:31:47.54 ID:???
>>773
deleet table tsumiki_tbl;

784 :NAME IS NULL:2011/05/21(土) 21:39:52.79 ID:???
本当に limit 節がサーバーに届いてるのか?

785 :NAME IS NULL:2011/05/21(土) 22:20:24.68 ID:???
× limit 節
△ ソーラン節
○ かつお節

786 :NAME IS NULL:2011/05/22(日) 11:11:55.30 ID:???
llinuxのmysqlで、outfileを使って/tmpに出力したら、 
ファイルのオーナーとグループが両方mysqlで,rw-rw-rwなんだけど、
mysqlを操作したユーザから消せなかった。

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

デフォルトのパーミッションの変更方法か消し方を教えて。
linuxのアカウントは、一つしか使えないです。

787 :NAME 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


788 :NAME 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がないってエラーになる。

789 :NAME IS NULL:2011/05/22(日) 18:30:14.79 ID:???
PHPMyAdminでエクスポートできる容量の制限ってあるのでしょうか
約100MBのサイズをエクスポートしようとしてるのですが
500 内部サーバー エラーがでます


790 :NAME IS NULL:2011/05/22(日) 19:21:20.97 ID:???
>>789
時間かかってるんで殺してエラーになってるから
時間かかってもいいようにphp.iniとかを設定する

791 :NAME IS NULL:2011/05/22(日) 19:24:19.52 ID:???
>>787
[mysqld]
datadir=〜
の部分を好きなところに変更したら?


792 :NAME IS NULL:2011/05/23(月) 16:53:15.99 ID:???
>>790
契約してる鯖ではphp.iniの設定を変えることができそうもないので困っています。
エクスポート用のbigdump.phpのようなものがあればいいんですが・・・

793 :NAME IS NULL:2011/05/23(月) 21:15:50.34 ID:???
>>792
ならphpmyadminのソースを自分で書き換えればいいだろ。
もっと頭使えよ。

794 :NAME 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するのも良いかもしれませんが…

どういうやり方が良いと、理由つきで教えてもらえると嬉しいです。
質問長くてすみません

795 :NAME IS NULL:2011/05/24(火) 11:04:59.58 ID:???
>>794
いいね!ごとにIDを振って個別管理

796 :NAME IS NULL:2011/05/24(火) 13:55:32.24 ID:V+PJwoKM
>>795
ありがとうございます。個別管理とは一つのテーブルでですか?
それだと、上で書いたうちの2番目のやり方で良いんでしょうか?

797 :NAME IS NULL:2011/05/24(火) 16:11:05.68 ID:???
>>794
負荷を考慮するなら情報は重複するが別テーブルで管理

798 :NAME IS NULL:2011/05/24(火) 17:42:04.49 ID:???
>>793
phpmyadminは初めから鯖に用意されているものなので書き換えできません。


799 :NAME IS NULL:2011/05/24(火) 18:36:13.34 ID:???
>>798
それどこの鯖?

800 :NAME IS NULL:2011/05/24(火) 21:00:26.55 ID:???
共有レン鯖ってphpmyadminは最初から入ってることが多いと思うぞ

801 :NAME IS NULL:2011/05/24(火) 21:13:14.24 ID:???
>>798
じゃ、自分でDLして、自分のパーティション内にアップすればいいだけじゃん。

802 :NAME IS NULL:2011/05/24(火) 21:32:30.26 ID:???
DLとかパーティションとかどういう意味だよw
専門用語知ってますって自慢したいのか?www

803 :NAME IS NULL:2011/05/24(火) 21:47:18.44 ID:???
そもそも話が噛み合ってないな。

804 :NAME IS NULL:2011/05/24(火) 22:12:42.75 ID:???
>>801
その「自分でDLして」のやり方を聞いてるんだとおもうぞw

805 :NAME IS NULL:2011/05/24(火) 22:42:00.77 ID:???
DL=ディーゼル機関車

806 :NAME IS NULL:2011/05/25(水) 00:32:04.32 ID:???
>>802
自分でphpmyadminをダウンロードして、レンサバの自分のパーミッション管理下にアップロードしていじろ、ってことだ。

すまんな、iPhoneからなんで、変な変換単語のまま投稿しちまった。

807 :NAME IS NULL:2011/05/25(水) 00:37:49.50 ID:???
tp://www.phpmyadmin.net/home_page/index.php
ここからソース落として設定やらエクスポートの制限時間やら書き換えて、鯖にアップしてdumpしろってこと。

808 :NAME IS NULL:2011/05/25(水) 01:20:01.47 ID:???
>>806
iPhoneだと変な変換が当たり前だと言いたいのか
iPhoneを使っていることを自慢したいのか

809 :NAME IS NULL:2011/05/25(水) 01:21:55.41 ID:???
>>807
tp://www.phpmyadmin.net/home_page/index.php
このURLをブラウザに貼り付けましたがWeb ページ表示不可と出ました。

810 :NAME IS NULL:2011/05/25(水) 05:20:53.25 ID:???
>>808
いちいちダルいとこつっこんでくるなぁ。
いまどきiPhoneが自慢になるとでも?

>>809
URLなんだし、普通httpから始まるよな?

811 :NAME IS NULL:2011/05/25(水) 11:31:44.68 ID:???
>>810
そこまでのあほじゃないだろ。それじゃアホを通り越して池沼レベルだ。
馬鹿にしすぎだぜ。

812 :NAME IS NULL:2011/05/25(水) 12:58:59.89 ID:???
phpmyadminなら100メガ程度ならそれでもできそうだが、
DBの容量がギガ超えた場合不可能なんじゃないの

813 :NAME IS NULL:2011/05/25(水) 13:55:47.54 ID:???
>>810
アクセスできました。httpのhtを書き忘れたんですね。
次はソースを落とす?
ソースって何でしょうか。どこに落とすのですか。

814 :NAME IS NULL:2011/05/25(水) 14:49:31.60 ID:???
>>812
どっかの借り物サーバでrmysqlがインストールされてて
phpmyadminが設定変更不可でootが取れないってところ
でしょ? DBの容量にギガも許されてないと思うよ。たぶん

815 :NAME IS NULL:2011/05/25(水) 15:09:01.13 ID:???
DBの容量の制限なんて聞いたことない
ふつう契約している鯖の容量内なら使える

816 :NAME IS NULL:2011/05/25(水) 15:37:17.09 ID:???
さくらみたいにDBは別鯖の場合がある
ユーザー容量制限とは別扱いだったような

817 :NAME IS NULL:2011/05/25(水) 15:45:29.21 ID:???
要するにphpmyadminを使う方法以外は
わからないってことだよなw

818 :NAME IS NULL:2011/05/25(水) 18:07:48.89 ID:???
いやその方法すらわからないw

819 :NAME IS NULL:2011/05/25(水) 18:50:54.92 ID:???
言い方は厳しいが、よくそれくらいの知識でレンサバ借りたな、と。
仕事上押し付けられたなら同情するが、
も少しローカルでいろいろ試してからの方がいいんじゃないか?

それか、プログラムも鯖管理もしないけど、ただMySQLのデータだけダウンロードする、ってことなのか?目的は知らんけど。
そうであるなら、一度レンサバ業者に相談してみては?
金払う、言うたらやってくれるんじゃないか?
俺ならやるw


820 :NAME IS NULL:2011/05/25(水) 19:07:34.98 ID:???
知識があるんなら教えてやればwww

821 :NAME IS NULL:2011/05/25(水) 21:44:37.88 ID:???
地図読めて道を知ってても、今向いてる方向と場所を教えてもらわんと、ナビゲート出来ない

822 :NAME IS NULL:2011/05/25(水) 22:38:49.22 ID:???
>>814

XREA+ で、ファイル(物理)サイズが1GB超えるくらいになったことはあった。
インポート/エクスポートでphpmyadminは使い物にならなかったよ。
安いレンサバでやることじゃあなかった…

823 :NAME IS NULL:2011/05/25(水) 23:50:11.26 ID:???
サーバーでどれだけ制限されてるかはわからんが、
phpなんかのシェル関数で直接mysqldump叩いてサーバー上にdumpファイル作ってダウンロードするのが一番楽そう。
今はもう安いしVPS使うのがいいな。

824 :NAME IS NULL:2011/05/26(木) 07:48:18.26 ID:???
>>821
phpmyadminを使わずに1GB超えるくらいのDBをエクスポートする方法
インポートはbigdump.phpでできるから

825 :NAME IS NULL:2011/05/26(木) 14:58:44.71 ID:???
>>824
mysqldumpでよくね?
それか自分でちょっとずつ吐く

826 :NAME IS NULL:2011/05/26(木) 15:50:04.77 ID:???
>>825
ShellもSSHも使用不可

827 :NAME IS NULL:2011/05/26(木) 16:20:32.75 ID:???
>>826
じゃあphpmyadminではスキーマだけ落として
残りは自分でちょっとずつ吐けばいいんじゃね?
タイムアウトになんない範囲で。

828 :NAME IS NULL:2011/05/26(木) 19:21:18.33 ID:???
>>821
カーナビの話はこの際関係ないと思います

829 :NAME IS NULL:2011/05/26(木) 19:22:32.78 ID:???
VPSよかVPNがお勧め。

830 :NAME IS NULL:2011/05/26(木) 21:46:29.50 ID:???
VPNよかVCNがお勧め。

831 :NAME IS NULL:2011/05/26(木) 23:26:20.25 ID:???
vipに逝け

832 :NAME IS NULL:2011/05/27(金) 00:28:50.04 ID:???
vipよかhipがお勧め。

833 :NAME IS NULL:2011/05/27(金) 02:42:11.42 ID:???
hipよかnipがお勧め。

834 :NAME IS NULL:2011/05/27(金) 19:51:46.86 ID:???
nipよかnicがお勧め。

835 :NAME IS NULL:2011/05/27(金) 21:20:10.79 ID:???
nicよかciaがお勧め。

836 :NAME IS NULL:2011/05/27(金) 23:32:55.51 ID:???
ciaよかgepがお勧め。


837 :NAME IS NULL:2011/05/28(土) 11:34:32.94 ID:???
一つのテーブルに収められるデータ量の上限は4G程度とのことですが、
これって画像データなどの場合はすぐに限界が来てしまいそうです。
大規模サービスを運用している場合、データ量が限界に近づくたびにテーブルを分割するなどして対応しているのでしょうか?

838 :NAME IS NULL:2011/05/28(土) 12:45:51.48 ID:???
4GB以上入るよ
それどこ情報よ

839 :NAME IS NULL:2011/05/28(土) 12:46:55.85 ID:???
>>837
データベースには画像のリンクを保存して
画像は他のサーバーのフォルダに保存とかでは

840 :NAME IS NULL:2011/05/28(土) 14:57:49.72 ID:???
>>839
http://hibari.2ch.net/test/read.cgi/php/1304064660/700-

841 :NAME 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'
となって見せてくれません。アホな質問をしているという自覚はあるんですが、
どうやったら繋げるのかワカランで困っています。ここ読めボケ!とか、基本はこうやろ!とか、
何でもいいので取っ掛かりを教えて下さい。パスワードの設定とかもどうすればいいのやら。。。

842 :NAME IS NULL:2011/05/28(土) 15:45:14.16 ID:???
>>837
4Gも入らない。上限は2Gだよ。

843 :NAME IS NULL:2011/05/28(土) 16:12:48.88 ID:???
>>842
ええ?2Gも入りますか?
以前800MBでエラーになったことあるんですが。

844 :NAME 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

845 :NAME IS NULL:2011/05/28(土) 16:28:20.73 ID:???
ストレージエンジンによるんじゃね
MyISAM?InnoDB?
OSのファイルシステムによるんじゃね
Linux ext3? FeeBSD zfs? Windows ntfs?

846 :NAME IS NULL:2011/05/28(土) 17:26:36.52 ID:???
ファイルサイズはOS(ファイルシステム)が扱える最大サイズが限度だろ。
別にMySQLに上限があるわけではないな。

847 :NAME IS NULL:2011/05/28(土) 17:54:00.63 ID:???
趣味サイトならともかく仕事でやるなら画像はDBに入れておかないと怖すぎるなぁ
バックアップとか特に。

848 :NAME IS NULL:2011/05/28(土) 18:00:06.66 ID:???
>>847
http://hibari.2ch.net/test/read.cgi/php/1304064660/700-

849 :NAME IS NULL:2011/05/28(土) 20:56:10.60 ID:???
>>847
仕事でやると、レプリケーションが大変なことになりそうだが。

850 :NAME IS NULL:2011/05/28(土) 21:22:12.84 ID:???
レプリケーションって何?

851 :NAME IS NULL:2011/05/28(土) 22:13:09.40 ID:???
ggr

852 :NAME IS NULL:2011/05/28(土) 22:15:12.54 ID:???
>>849
意味が分からないんだけど…DBに画像を格納するとどうしてレプリケーションが大変に??

853 :NAME IS NULL:2011/05/28(土) 23:16:15.26 ID:???
いや、画像云々じゃなくて、仕事でやると大変ということ。

854 :NAME IS NULL:2011/05/28(土) 23:19:20.90 ID:???
>>841
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html#doc1_id458

このあたり読んでみたら。

855 :NAME IS NULL:2011/05/29(日) 01:14:54.19 ID:???
DBに画像保管とか、素人乙としかいいようがない設計

856 :NAME IS NULL:2011/05/29(日) 01:23:57.38 ID:???
>>855
あまり初心者をいじってやるなよ。かわいそうだろ。

857 :NAME IS NULL:2011/05/29(日) 09:01:13.96 ID:???
>>841

-h localhost  ←これを付けなかったらどうなるかな?

858 :NAME IS NULL:2011/05/29(日) 09:16:32.51 ID:???
>>849>>855
クラスタ組んでいる場合なんかはDBMSに任せられる分逆に楽だと思うけどね。

859 :NAME IS NULL:2011/05/29(日) 10:15:22.02 ID:???
>>858
画像とかサイズあるから、大量にくるとレプリケーション遅延するっしょ。
スレイブの状態がバラバラになる可能性も出る。

860 :NAME IS NULL:2011/05/29(日) 12:44:37.69 ID:???
そりゃサイズ次第だな。
スレイブの状態がバラバラってのは意味がわからん。
MySQL ClusterはBLOBの一貫性に問題があるってこと?

861 :NAME IS NULL:2011/05/29(日) 13:05:01.35 ID:???
巨大データが届くと遅延が発生してバラバラって事でしょ
掲示板とかに書きこんだ文字がなかなか表示されなかったりね
バイナリデータに差異が起きるのでなく、時間的に差異が出る

862 :NAME IS NULL:2011/05/29(日) 13:35:32.45 ID:???
そういう現象が発生するとしたらクラスタとして成り立っていないことになるが…
MySQL Clusterにそういう問題があると言っている?
いずれにしても、画像を外出しにしたらその同期のところを全部自前で用意しなきゃ
ならんわけだよ。

863 :841:2011/05/29(日) 14:54:29.35 ID:???
>>854 どうもありがとう。読んでみます。

864 :NAME IS NULL:2011/05/29(日) 15:25:38.52 ID:???
クラスタって何?

865 :NAME IS NULL:2011/05/29(日) 18:32:35.73 ID:???
>>862
あぁ MySQL Cluster ってオンメモリだけなお大臣ソリューションあったなw
一般的なレプリケーションの時の話ですね。

同期のところを自分で〜ってのも多分HTTPサービスだろうからリバースプロキシ+キャッシュとか、rsync でえっちらおっちらとか、そちらの手法も色々確立されてるし
画像をDBにつっこんで幸せな状況もあるし。
うちは両方やってるよ

866 :NAME IS NULL:2011/05/29(日) 19:14:10.30 ID:???
レプリケーションでもあんまり事情は変わらんと思うがなぁ。
画像は同期が取れていないことがあってもいいから通常レコードの
同期だけは早く終わらせたいとか、そういう暗黙の前提があるのかね。

867 :NAME IS NULL:2011/05/29(日) 20:46:12.65 ID:???
>>866
通常マスタは更新専用で読み出しはスレイブからになる。だから、スレイブの最新データがそれぞれ違うと大問題。
大手サイトのケーススタディみたいなの見るといいよ。
ほぼみんな同じ運用。
画像はDBとは別管理で、DBはレプリケーションで、マスタ・スレイブ。スレイブ増やして負荷分散。

最近はAmazonS3に画像などファイル預けるのがデフォになりつつあるもうな気もする。

868 :NAME IS NULL:2011/05/29(日) 20:59:30.77 ID:???
だからさ、DBと画像の同期ズレは許容すんのが前提なの?で、スレーブ間の同期は
そんだけシビアなの?
そもそも、スレーブ間の完全な同期が必要だったらレプリケーションでやっちゃダメじゃんw
それを、画像が含まれないなら無視できる範囲だからやっちゃえ、てなもんか。

869 :NAME IS NULL:2011/05/29(日) 22:27:50.45 ID:???
レプリケーションって何?

870 :NAME IS NULL:2011/05/29(日) 22:42:16.29 ID:???
>>868
画像はそもそもDBとは別に管理するもんだ。DBスレイブには画像は置かない。
まぁ自分はそこまで大きなシステム触ったことないけど、静的ファイルの配信は負荷分散というより、冗長化による信頼性なんじゃないかな。
バックアップするだけで、レプリケーションするわけじゃないと思う。
詳しい人教えて。

871 :NAME IS NULL:2011/05/30(月) 00:35:25.65 ID:???
大学の卒業研究でMySQL、PHPを1年ほど使用してデータベースサーバを
の構築をした経験があり、実務経験がないのですが、転職ってできますかね?

現在大学4年なので新卒向けのサイトを見て就職するのが一般的なのですが
給料等の面から、同じ正社員であれば転職のほうが良いなぁと考えています。
お詳しい方教えてください。

872 :NAME IS NULL:2011/05/30(月) 00:44:27.57 ID:???
環境構築云々より何を作ったかが大事


873 :NAME IS NULL:2011/05/30(月) 00:52:57.85 ID:???
実務経験がないなら新卒以下の待遇だろうな

874 :NAME IS NULL:2011/05/30(月) 02:22:51.65 ID:???
>>871
その程度の人材なら二束三文で手に入るので別にどうでもいいし
それしかウリがないのなら むしろいらないんだけど

というのが正直な回答になるよね・・・申し訳ないけど

875 :NAME IS NULL:2011/05/30(月) 02:53:48.28 ID:???
素直に新卒枠で見ていった方が良さそうですね。
ありがとうございました。

876 :NAME IS NULL:2011/05/30(月) 07:35:03.62 ID:???
画像をDBへの話は、画像を入れるタイミングが
人によって想定がバラバラに見える。

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

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

ちなみに、うちの場合は「ユーザー更新のサービスはしてない」、
「画像の合計容量が数Gしかない」という条件なので、
一番性能が良いと考えて、WEB用サーバ自体にファイル同期してる。
# サーバは300台前後

877 :NAME IS NULL:2011/05/30(月) 18:28:43.84 ID:???
状況によって変わるから絶対の解は無いよね
画像が入ったテーブルのダンプがでかくて嫌とかもあるな

878 :NAME IS NULL:2011/05/31(火) 00:21:36.86 ID:???
バイナリファイルをダンプで出すこと出来ましたっけ?

879 :NAME IS NULL:2011/05/31(火) 01:36:31.82 ID:???
基本を分かってあえて崩す技使うのはあり得るが、それを初心者にいきなり教えるなっつーこと。
あえてそれやるレベルの人間がここで「4G越えたらテーブルを分割して対応しているの?」なんて
質問するわけないだろう? だから、ここでの回答は一律「画像をDBに入れんな」 でいいんだよ

880 :NAME IS NULL:2011/05/31(火) 07:07:01.39 ID:???
DBとDB管理外のリソースに分ける方が基本なのかw
どうも常識が違うようだ。

881 :NAME IS NULL:2011/05/31(火) 07:16:40.70 ID:???
自分が今まで勉強のために見たすべてのケーススタディは、バイナリは別管理だった。


882 :NAME IS NULL:2011/05/31(火) 09:41:20.20 ID:???
テーブルのフィールドタイプがInnoDBで
全体のフィールドタイプがMyISAMになってることに気がついたんですが
このままでも問題ないでしょうか


883 :NAME IS NULL:2011/05/31(火) 11:56:02.26 ID:???
>>882
言ってることが良く解らん。

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

それは、もーまんたい。

884 :NAME IS NULL:2011/05/31(火) 12:22:17.13 ID:???
>>883
そのとーりです。
特に支障なく動いているようなのですが、
気持ち悪いので統一したほうがいいのかとおもって

885 :NAME IS NULL:2011/05/31(火) 13:10:25.82 ID:???
>>880
君どこで勉強したの?

886 :NAME IS NULL:2011/05/31(火) 20:39:29.66 ID:???
>>880
君の常識は怖いな。

887 :NAME IS NULL:2011/05/31(火) 20:54:30.95 ID:???
>>884
統一じゃなく、テーブルの使用目的に合わせて設定すべきだぞ。
MyISAMとInnoDBの違いとか勉強すべし。

888 :NAME IS NULL:2011/05/31(火) 21:56:47.39 ID:???
>>887
最近は、調べていくと、InnoDB一択にしか
ならなくない?
よっぽどでなければそれ以外の選択肢に
ほとんど意味がない感じがする。


889 :NAME IS NULL:2011/05/31(火) 22:37:27.38 ID:???
全文検索さえなければ

890 :NAME IS NULL:2011/06/01(水) 01:44:42.31 ID:???
>>847
DBとファイルシステムを深く知らない俺には無理だ。

891 :NAME IS NULL:2011/06/01(水) 04:09:28.72 ID:???
likeで実現できない検索機能は作らない。これでOK

892 :NAME IS NULL:2011/06/01(水) 14:05:48.78 ID:???
>>891
うんこだな

893 :NAME 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 '-------------------------------------------------------

どうにか、移行する方法はないでしょうか。

894 :NAME IS NULL:2011/06/01(水) 17:20:00.05 ID:NFtZrkjM
自己レスです。
line 4 を消したら移行できました。m(_ _)m


895 :NAME 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'"
といったエラーが出てしまいます。
.がテーブル指定の.と認識されていると思うのですが回避策は有りませんでしょうか。

896 :NAME 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

897 :NAME IS NULL:2011/06/01(水) 22:07:37.39 ID:???
>>896

書き方は合ってるけど、それはバックスラッシュじゃないよ。

898 :NAME IS NULL:2011/06/01(水) 22:15:15.84 ID:???
バッククォートだな。

899 :NAME IS NULL:2011/06/01(水) 22:22:20.85 ID:???
後で泣き見そうなカラム名だなや

900 :NAME IS NULL:2011/06/01(水) 23:05:44.41 ID:???
ここにのせるのに適当な名に変えてんでしょ?実際にそうだったらプログラマは泣くだろうけど w

901 :NAME IS NULL:2011/06/01(水) 23:22:56.85 ID:???
>>894
ぐぐれカスと言わざるを得ない

902 :NAME IS NULL:2011/06/02(木) 03:14:21.22 ID:???
>>901
ググらなくてもエラー見ればどこを直せばいいかはわかるという・・・

903 :NAME IS NULL:2011/06/02(木) 04:18:09.34 ID:???
でも英和辞典が必要だけどね!

904 :NAME IS NULL:2011/06/02(木) 06:34:33.50 ID:???
>>903
この程度の英語で辞書とか釣りだろ?

905 :NAME IS NULL:2011/06/02(木) 11:25:29.85 ID:???
>>904
自分が英語がわかるのを自慢したいのか?
それともわからないのにカッコつけてるだけか?

906 :NAME IS NULL:2011/06/02(木) 14:05:37.14 ID:???
>>905
いやまじで、あの程度の英語を毎回辞書で調べてたらプログラミングなんかできなくね?
エラーも全部英語だし。

それにしても、日本人はほんまに英語できんのやなぁ。英語=自慢とか。

907 :NAME IS NULL:2011/06/02(木) 14:51:14.54 ID:???
>>896
'とか"で囲って無理だったので諦めてました、無知でした。
ありがとうございます!

カラム名変えてます。

908 :NAME IS NULL:2011/06/02(木) 14:57:53.37 ID:???
まるで他人ごとだなw
在日乙

909 :NAME 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側でなんとかできそうですが・・・

910 :NAME IS NULL:2011/06/02(木) 19:10:39.72 ID:???
>>909
INSERT INTO unko SET hoge=1;
という話?

911 :NAME IS NULL:2011/06/02(木) 19:39:13.69 ID:???
>>910
うおー、今までvalues(ごちゃごちゃ);って書き方しか知りませんでした
勉強になりました、解決しました、ありがとうございます!

912 :NAME IS NULL:2011/06/02(木) 21:36:48.40 ID:???
tinkoとかunkoとか下品な言葉を使うのは止めてください。

913 :NAME IS NULL:2011/06/02(木) 21:38:19.45 ID:???
バッククォートってキーボードでどうやって入力すればいいのでしょうか。

914 :NAME IS NULL:2011/06/02(木) 21:46:49.57 ID:???
>>913
`

915 :NAME IS NULL:2011/06/02(木) 22:16:17.73 ID:???
どのキーを押せば出るのでしょうか。

916 :NAME IS NULL:2011/06/02(木) 22:24:32.30 ID:???
Shift+@

ちったぁggr

917 :NAME IS NULL:2011/06/02(木) 23:14:49.54 ID:???
‘ ←こんなのが表示されましたが、これでいいのでしょうか。

918 :NAME IS NULL:2011/06/03(金) 00:29:19.88 ID:???
゛←これじゃね?

919 :NAME IS NULL:2011/06/03(金) 00:34:16.03 ID:???
(‘_ ‘ ) < んなわけねーだろ

920 :NAME 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使用ですが, これに限らす) ではこれが機能しないのです。
よろしくお願いします。


921 :NAME IS NULL:2011/06/03(金) 11:56:47.45 ID:???
mysqldumpの書き方で質問です。
特定のテーブルのみを指定したくて、以下のように書きました。

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

しかし、バックアップファイルは出来ません。
テーブル名にワイルドカードを指定できないのでしょうか?

922 :NAME IS NULL:2011/06/03(金) 14:33:26.16 ID:???
>>921
自分で実際にやってできないのにどうしてできると思うんだ?


923 :NAME IS NULL:2011/06/03(金) 17:11:14.18 ID:???
/var/lib/mysqlを丸ごとコピーすればバックアップできると思うのですが、
敢えてmysqldumpを選ぶ理由って何かあるのでしょうか?

924 :NAME 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


925 :NAME 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が結合したあとでソートされているようで、非常にコストがかかっています。


926 :NAME IS NULL:2011/06/03(金) 19:20:12.91 ID:???
コストがかかってしまいましたか。
なるほど、勉強になりました。

927 :NAME 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でソートして取得」を高速に行うことはできないのでしょうか?


928 :NAME IS NULL:2011/06/03(金) 19:22:01.98 ID:???
>>923
1つのファイルに収まる、圧縮して容量も劇的に減らして残しておける。
あとはDB全体をリストアするなど。
(mysqldump→全データベース削除、関連ファイル初期化→インポートしたらまっさらな状態からテーブルが作られる)

929 :NAME IS NULL:2011/06/03(金) 19:23:22.73 ID:???
なるほどね…。
このケースだとそのような疑問がでるのか…。
ご報告ありがおう。
色々と勉強になりました。

930 :NAME 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;

だと何か問題あるのか


931 :NAME IS NULL:2011/06/03(金) 20:46:48.89 ID:???
>>923
丸ごとコピーは原則mysqldを停止しないとダメ
mysqldumpはmysqldを動かしたままとれる

932 :921:2011/06/03(金) 22:06:46.31 ID:???
>>922
「出来る方法があるのではないか?と思って質問した次第です・・。

データベース内にいくつもテーブルを作っているケースってあるでしょうし、
必要なテーブル名を全て列挙するのも面倒と思いまして。
それしか方法がないなら納得しますが、他に方法はあるのではないか?
自分が知らない事があれば教えて欲しい。そう思って質問しました。

933 :NAME IS NULL:2011/06/03(金) 22:16:16.99 ID:???
バッククォートってキーボードでどうやって入力すればいいのでしょうか。
Shift+@
と昨日教わりましたが、

このように表示されてしまいます。
なお、IMEはPCに入っていたものを使っています。

934 :NAME IS NULL:2011/06/03(金) 23:00:33.28 ID:???
` ←Shift + @
‘ ←IME on で Shift + @

結論:IME切れ、ハゲ

935 :NAME IS NULL:2011/06/03(金) 23:02:10.29 ID:???
IMEを切れとのことですが、切るとはどのような行為を示していますか?
切るとハゲに関係があるのかしらん?

936 :NAME IS NULL:2011/06/03(金) 23:43:40.88 ID:???
つまらない事聞きますけど、「PC用」「携帯用」とフィールドを分けるとき、
どういうフィールド名にしていますか?
電話番号の場合、telはPC用として、携帯はmobile_tel?ktai_tel?

937 :NAME IS NULL:2011/06/04(土) 00:47:10.59 ID:???
サーバのバージョン: 5.1.44-community
MySQL クライアントのバージョン: mysqlnd 5.0.5-dev

とかいうときMySQL Connector Netはどのバージョンをインストールしたらいいのでしょうか?

938 :NAME IS NULL:2011/06/04(土) 00:53:49.98 ID:???
>>930

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

大変助かりました。本当にありがとうございます!

939 :NAME IS NULL:2011/06/04(土) 10:00:57.58 ID:???
>>936
好きなようにしたら?としかいいようがないけどw


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

DB設計を語るスレ 3
http://hibari.2ch.net/test/read.cgi/db/1269585561/l50


940 :NAME IS NULL:2011/06/04(土) 11:23:45.20 ID:m9IbrQpl
すみません。

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

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

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

よろしくお願いします。

941 :NAME 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

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

度々すみませんがよろしくお願い致します。


942 :NAME IS NULL:2011/06/04(土) 14:16:55.14 ID:???
>>941
なんかオプションをつけるとだいたいインデックスがつく

943 :NAME IS NULL:2011/06/04(土) 16:12:35.39 ID:???
主キーにはインデックスをはらなくてもって、
主キーこそがインデックスだと思うんだが、
自分の認識間違ってるのか。

944 :NAME IS NULL:2011/06/04(土) 22:24:29.98 ID:???
>>943
お前の場合は人生そのものが間違いだ

945 : 忍法帖【Lv=5,xxxP】 :2011/06/05(日) 00:53:12.69 ID:???
お次の質問どうぞ。

946 :NAME 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'...

947 :NAME IS NULL:2011/06/06(月) 00:25:10.23 ID:???
>>937

Connector/Net, Connector/Jはクライアントライブラリ使わないので、サーバ側にあわせて何でもよいよ。
サーバ側5.1ならConnector/Netの最新版(6.3.6)でいいんじゃね?

948 :NAME IS NULL:2011/06/06(月) 01:26:21.99 ID:???
>>946
left join

949 :NAME IS NULL:2011/06/06(月) 02:55:19.06 ID:???
>>948
ありがとうございます!
結果も1行で取得したいのですが、不可能でしょうか?
それともleft join等で複数行で取得するのが一般的でしょうか?

950 :NAME IS NULL:2011/06/06(月) 02:58:38.79 ID:???
基本的には複数行で取得するのが一般的だな。
どのみち「abcの趣味」が複数あるわけだからプログラム側でうまく処理すればいい。

951 :NAME IS NULL:2011/06/07(火) 00:55:07.04 ID:???
>>950
ありがとうございます!
プログラム側で対処する事にします!

952 :NAME 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

953 :NAME IS NULL:2011/06/07(火) 20:31:30.13 ID:???
500MBでしょ?5時間もすればおわるでしょ

954 :NAME IS NULL:2011/06/07(火) 21:02:37.03 ID:???
>>952
見てないけど、sql文のはじめの方でインデックスを作成してる場合は、インデックスを作成せずに create table をやると多少というかかなり速くなる
で、タプルが全部 insert された後にインデックスを追加する
(たぶん、sqlファイルの最初のcreate table 文でキーの指定をしてるので、それを全部取り除く)

あと、ファイルサイズと関係なく、MySQLはタプル(行、レコード)の数が10万を超えると、検索の方も遅くなって使い物にならなくなるので、タプルが10万を超える場合は、かなり慎重に設計や最適化をする必要がある
(ちゃんとやれば、10万以上でもそれなりに速く動く)
>>952 のダンプデータは本当に MySQL のダンプなのでしょうか?

955 :NAME IS NULL:2011/06/07(火) 22:27:03.45 ID:???
mysql-connector-netをダウンロードしに行ってきたんですが、
メアドでfoo.bar@site.comみたく前半でドットが入ると蹴られるのね。

956 :NAME IS NULL:2011/06/07(火) 23:42:59.31 ID:???
>>955
そりゃRFC違反だからな。弾きもするだろ。

957 :952:2011/06/07(火) 23:53:22.36 ID:???
>>953
まさに5時間ぐらいでした
こんなものなのかー

インデックス削れば速くできますよね、ありがとう気づかなかった

958 :NAME 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

959 :NAME IS NULL:2011/06/08(水) 00:44:22.69 ID:???
>>954
タプルってtableのこと?
そういう読み方流行ってんの?

960 :NAME IS NULL:2011/06/08(水) 00:44:29.55 ID:???
>>958
Innodb なら log buffer sizeも関係ありそう?

まぁ、質問主がどんなSQLなんかわからんけど、1行ずつ入れると遅いし
insert .... values(),(),()
は常識だよな?

961 :NAME IS NULL:2011/06/08(水) 00:46:21.06 ID:???
10万程度ならインデックスなくてもそれなりに早いよな。


962 :952: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

963 :NAME IS NULL:2011/06/08(水) 06:14:20.41 ID:???
>>962
Wikipediaのデータで遊びたいなら全文検索あったほうがよくないか?
それならMyISAMになるが。日本語だとちょいと工夫がいるけど。
groongaとかで遊んで見たら?

964 :NAME IS NULL:2011/06/08(水) 07:56:59.67 ID:???
5時間が12分に短縮って、、、、 w

965 :NAME IS NULL:2011/06/08(水) 08:15:30.37 ID:???
>>959
釣りだと思うけどw
タプル=セット=組=レコード一件

966 :NAME IS NULL:2011/06/08(水) 09:23:01.56 ID:???
タプルって呼び方はPostgreSQLの人がよく使う印象

967 :NAME 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

968 :NAME IS NULL:2011/06/08(水) 11:06:14.03 ID:???
>>967
SELECT ID,NAME FROM unko GROUP BY NAME;

MySQL以外じゃろくに動かないから注意な

969 :NAME IS NULL:2011/06/08(水) 14:23:02.84 ID:???
タプルはtupple
英語だとテュープルに近いw

970 :967:2011/06/08(水) 15:02:33.22 ID:???
>>967
ありがとうございました。

GROUP BYですね。
勉強してきます!!

971 :967:2011/06/08(水) 15:03:39.45 ID:???
あ、安価間違いましたorz
>>968さんありがとうございました。

972 :NAME 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
で元に戻しておいたほうがいい。
# 手元の開発環境とかならお好きに

本番環境でも大量にある参照用スレーブとかは
この設定にしておくとレプ遅延が起こりにくかったりする。


973 :NAME IS NULL:2011/06/08(水) 19:39:43.77 ID:???
>>965,966,969
「ブ」じゃなくて「プ」なのか。タプルって用語を知らなかった。

974 :NAME IS NULL:2011/06/08(水) 23:30:24.71 ID:???
>>956

RFC5321 4.1.2. を読んで言ってるんだろうね?


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

976 :NAME IS NULL:2011/06/09(木) 00:31:55.62 ID:???
>>975

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

読んだだけでまるで理解していないというのはかなりたちが悪いんだよね。
何事も半可通が一番迷惑なんだよ。


977 :NAME IS NULL:2011/06/09(木) 02:09:31.75 ID:???
>>976
半可通って久し振りに聞いた。

978 :NAME 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
のような出力を得たければ、どうするのが定石でしょうか。



979 :NAME IS NULL:2011/06/09(木) 09:39:34.39 ID:???
ドットを使うくらいじゃRFC違反にはならないからね


980 :NAME 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

981 :NAME IS NULL:2011/06/09(木) 18:44:21.83 ID:???
>>980
やっぱり列の数に応じて必要なだけjoinするしかないんですかね…。

982 :980:2011/06/09(木) 20:20:01.68 ID:???
間違えた。こうか?

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;

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)