MySQL 総合 Part20

このエントリーをはてなブックマークに追加
952NAME IS NULL:2011/10/13(木) 03:57:02.67 ID:???
>>951
>bash: c:mysqldatainsert.sql

ディレクトリ構成からするとWindowsで使ってるように見えるんだけど、DOSプロンプトじゃなくてbashということはCygwinかMSYSあたりで使ってる?

だとしたら、Cygwinなら

/cygdrive/c/mysql/data/insert.sql

のような形にすればいけるかも。
953NAME IS NULL:2011/10/13(木) 04:18:51.89 ID:???
>>952
基本情報ごっそり抜けて済みません。
自分はwinXPprofetnolで操作してまして、アップロード希望先のサーバは
DTIで借りてるserversman@vpsです。操作はteraterm様で行っています。
teratermの代わりにCygwinを使うの早速やってみます。ありがとうございます。
Cygwinて昔、何かで触って以来です。自信んっしん。
954952:2011/10/13(木) 04:45:20.33 ID:???
>>953

つまり
・SQLファイル = 自PCのデスクトップ
・DB = VPS
・VPSへの接続 = Teraterm
ですよね。

それだとCygwin使っても状況は変わらない。

mysql> SOURCE c:¥mysql¥data¥insert.sql
はTeraterm上の(つまりVPS上の)ファイルを見に行くわけだから当然該当ファイルは無いわけだし、

# mysql -u ユーザー名 -p -h ホスト名 DB名 < c:¥mysql¥data¥insert.sql
も先頭が#なところからしてTeraterm上(=VPS)で行ってるだろうから、これもだめ。
955NAME IS NULL:2011/10/13(木) 04:49:17.19 ID:???
ものすごい基礎の基礎を見逃していてお恥ずかしいというか
先ずsqlファイルをどうにかしてvpsサーバへ送り込まないとならんわけですね
そう。それがffftpで何故か送れなくて(重すぎる?)アレなのでした。
ちょっと寝て起きたら移送方法をちゃんと調べます。展開は間違ってない富田。
どうもありがとう。
956952:2011/10/13(木) 04:51:47.57 ID:???
>>953
というわけで、恐らく一番簡単な正解は
「SQLファイルをVPSにアップロード」ではないかと。

VPSに
/home/{953のユーザ名}/insert.sql
の形でアップロードして、

# mysql -u ユーザー名 -p -h ホスト名 DB名 < /home/{953のユーザ名}/insert.sql

でいけると思う。
要は、サーバ側で作業するならサーバ側にSQLファイル置こうねって事です。

WindowsにMySQLクライアントインストールしてるなら、「DOSプロンプト上から(つまり自端末から)」
mysql -u ユーザー名 -p -h ホスト名 DB名 < c:¥mysql¥data¥insert.sql
すれば行けると思うけど、自分はやったことない。

957952:2011/10/13(木) 05:00:25.41 ID:???
あーそうですね、955 の理解であってると思いますw

serversmanかFFFTPに固有の事情があるのかもしれないけど、自分はさくらVPSでマカーなのでその辺はよくわからないや。
軽いファイルや空ファイルでチェックするのが早そうだけど、この辺はMySQLの話題ではなくなるのでこの辺で。


958NAME IS NULL:2011/10/13(木) 16:43:18.88 ID:???
serversmanは自分で設定しないかぎりftpd動いてないだろ
scpしろ
959NAME IS NULL:2011/10/13(木) 19:46:17.43 ID:???
Datetime型のフィールドについて、現在より30分前のものという条件でセレクトしたいときはなにを使うべきでしょうか?
960NAME IS NULL:2011/10/13(木) 22:20:14.73 ID:???
> なにを使うべきでしょうか?

どういう意味?
961NAME IS NULL:2011/10/13(木) 23:29:49.52 ID:???
>>959
WHEREを使って30分前を指定してあげればいい。

>>960
こうやって回答してあげるのが楽しいんだ。
962>>949:2011/10/14(金) 00:38:48.89 ID:???
>>950
ありがとうございます!
963NAME IS NULL:2011/10/14(金) 00:58:18.63 ID:???
お安い御用です。
964NAME IS NULL:2011/10/14(金) 11:42:27.21 ID:???
次スレの季節
965NAME IS NULL:2011/10/14(金) 17:59:16.90 ID:???
>>959
ヒント:time_add(), between, now()
966NAME IS NULL:2011/10/14(金) 20:21:57.26 ID:???
>>959
30分前ってことは、現在時からジャスト30分0秒前、ってことだよね。
967NAME IS NULL:2011/10/14(金) 21:06:34.14 ID:bpCxU2Us
商品Aが複数カテゴリ(別テーブルにて定義、それをJOIN)に入ってる場合に
こんな感じで帰ってくるんだけどこれでいいの?初めての設計でよくわからない。

itemId ... categoryId
A ... 4
A ... 5
A ... 6

見た目上は商品名とかの ... が何度も繰り返しされてるようで気持ち悪い。
内部的に何らかの最適化が行われてるといいんだけど、他にいい方法があるのかな?

それと、PHPで利用する場合にこのレコードを順に走査していって、前回と同じIDなら
そのIDに対してカテゴリを追加って具合で大丈夫?
968NAME IS NULL:2011/10/14(金) 22:42:02.24 ID:???
>>967
DB設計としては合ってる
969NAME IS NULL:2011/10/15(土) 00:07:10.62 ID:???
あってない。
DB設計を勉強しましょう
970NAME IS NULL:2011/10/15(土) 00:09:19.70 ID:???
PHPで順に操作とかアホのやること
971NAME IS NULL:2011/10/15(土) 00:15:02.00 ID:???
PHPで順に捜査とか天才のやること
972NAME IS NULL:2011/10/15(土) 00:19:06.26 ID:???
多対多ならこの構成でいいんじゃないの?
973NAME IS NULL:2011/10/15(土) 00:49:52.46 ID:???
DB設計でならあってる
974NAME IS NULL:2011/10/15(土) 01:57:06.43 ID:???
見た感じ多対多じゃなくて1対多じゃね?
975NAME IS NULL:2011/10/15(土) 02:53:00.03 ID:???
用途がまったく想像できますん
976NAME IS NULL:2011/10/15(土) 04:08:26.76 ID:???
あんたに想像してもらいたくない
977NAME IS NULL:2011/10/15(土) 08:51:15.28 ID:???
>>967
とあるものが複数カテゴリに属してるなら、そうなって当たり前だろ。
978NAME IS NULL:2011/10/15(土) 11:29:45.03 ID:???
当たり前かどうかは当人の価値観に依存する
979NAME IS NULL:2011/10/15(土) 12:44:19.61 ID:???
じゃあ定石で
980NAME IS NULL:2011/10/15(土) 13:23:04.59 ID:???
>>978
エゴだよそれは!
981NAME IS NULL:2011/10/15(土) 13:23:57.55 ID:???
>>979
囲碁だよそれは!
982NAME IS NULL:2011/10/15(土) 17:13:01.24 ID:???
>>979
うちの上司、定石って名前
983NAME IS NULL:2011/10/15(土) 17:36:40.88 ID:???
うちのは力石
984NAME IS NULL:2011/10/16(日) 00:51:29.64 ID:???
SNSサイトを作っているのですが、DBに投稿した日記(Text)の冒頭部分のみを取り出すにはどうすればいいでしょうか
レコード登録時に冒頭部分のみのカラムを作るのも効率が悪い気がしてきて・・
985NAME IS NULL:2011/10/16(日) 01:08:39.27 ID:???
>>984
LEFTとか使えば
986NAME IS NULL:2011/10/16(日) 04:33:08.68 ID:???
>>985
LEFT関数中々便利ですね
Textを全文取り込んで文字列操作するよりもメモリが節約できそうです
ありがとうございます
987NAME IS NULL:2011/10/16(日) 10:23:50.69 ID:???
お安い御用です。
988NAME IS NULL:2011/10/16(日) 16:00:22.56 ID:???
>>983
エコだよそれは!
989NAME IS NULL:2011/10/17(月) 11:47:51.56 ID:???
id         int
category_id   int
post_date     datetime
comment     varchar(255)
count       int           5.1 MyISAM

100万件以上あるテーブルで、
数種類あるカテゴリ別に月単位でcountの多い順に20件集計したいのですが、
どこにインデックスをつけたらいいですか?

試してみたところcategory_idとcountの複合インデックスが一番早かったのですが、
もっと早くなるいい付け方はないでしょうか
990NAME IS NULL:2011/10/17(月) 12:31:52.03 ID:???
サマリ作る
991NAME IS NULL:2011/10/17(月) 13:55:34.01 ID:???
>>989
yyyymmってカラムを追加して
(category_id, yyyymm, count)というインデックスを作り、

SELECT ... FROM ttt
WHERE category_id = aaa AND yyyymm = bbb
ORDER BY count DESC LIMIT 20;

をcategory_id分繰り返すのが速い。
けど先月分まで確定してるならあらかじめサマリ作っておけばいい
992989:2011/10/17(月) 16:35:11.66 ID:???
ありがとうございます。試してみます。
993NAME IS NULL:2011/10/17(月) 19:37:54.55 ID:???
お安い御用です。
994NAME IS NULL:2011/10/17(月) 21:53:50.84 ID:???
次スレまだ?
995NAME IS NULL:2011/10/17(月) 22:34:26.88 ID:???
このスレで終了します。
996NAME IS NULL:2011/10/18(火) 13:37:28.52 ID:???
次はオラクルに統合だな
997NAME IS NULL:2011/10/18(火) 15:28:11.52 ID:???
お安い御用です。
998NAME IS NULL:2011/10/18(火) 18:45:05.84 ID:???
oracleのexpressedition入れたら、めちゃ重たくなったんで、それは嫌
999NAME IS NULL:2011/10/18(火) 19:55:18.22 ID:???
1000NAME IS NULL:2011/10/18(火) 19:55:56.15 ID:???
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。