のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,300人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレMySQL 総合 Part23

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    151 : NAME IS - 2012/10/29(月) 18:54:27.28 ID:??? (+32,+29,-6)
    >>150
    初めはそのつもりでした
    完全独学、参考書一切なしで勉強してるんで
    152 : NAME IS - 2012/10/29(月) 18:55:21.42 ID:??? (+33,+29,-6)
    独学ってのは参考書を見ないことじゃないぞw
    153 : NAME IS - 2012/10/29(月) 19:06:46.15 ID:??? (+38,+29,-8)
    >>152
    何か参考書買わなくてもネットに色んな知識が転がってるからいいかなって
    154 : NAME IS - 2012/10/29(月) 19:08:51.82 ID:??? (-27,-30,-84)
    複数レコードの結果を取得する例として、

    mysql_fetch_assocをwhileループに突っ込んで何度も実行して取得してる例をよく見かけるんですが、
    これって一般的な方法ですか?
    SQLITEいじってたときは、sqlite_array_queryで複数レコードを一発で配列として取得できてたので、効率悪い気がするんですが
    155 : NAME IS - 2012/10/29(月) 19:15:17.02 ID:??? (+15,+17,-7)
    数万件のレコードでもそうするつもり?
    156 : NAME IS - 2012/10/29(月) 19:16:28.90 ID:??? (-28,-29,-9)
    sqlite_array_queryの実装は見てみたりした?
    157 : NAME IS - 2012/10/29(月) 19:18:44.23 ID:??? (+27,+29,-4)
    >>155
    数万件なら諦めますが、数百件程度です。

    >>156
    はい
    159 : NAME IS - 2012/10/29(月) 21:06:37.86 ID:??? (-21,-30,-41)
    普通の流れ

    1. query 投げる
    2. データなしまで fetch する
    3. データを取り出して処理
    4. 2に戻る

    sqlite_array_query て使ったことないけど
    内部でこんな処理をやっている筈
    160 : NAME IS - 2012/10/29(月) 21:09:29.45 ID:??? (+22,+29,-6)
    >>159
    じゃあ結局同じ事をやろうとしてたってことですね
    じゃあこの方法のままで行きます
    ありがとうございました
    161 : NAME IS - 2012/10/29(月) 23:34:38.71 ID:??? (+11,+0,-45)
    >>141
    問い合わせたのフォームがあったので問い合わせたのですが、連絡がないようです。
    レスポンス悪いのかな?
    162 : NAME IS - 2012/10/30(火) 00:59:30.11 ID:??? (+28,+29,+0)
    >>161
    昨日の今日だし
    二三日待ってみるよろし
    163 : NAME IS - 2012/10/30(火) 11:14:56.95 ID:??? (-25,-29,-76)
    >>160
    お前はゴミバカ光線卒以下の蛆虫かいな(爆笑)
    中卒か?( ´Д`)y━・~~
    とにかくゴキ光線以下の畜生だということわわかるでぇ(爆笑)
    ホンマ雑魚がわらわら寄ってくるな(爆笑)この板は(爆笑)( ´Д`)y━・~~
    166 : NAME IS - 2012/10/30(火) 17:55:46.07 ID:??? (+41,+29,-59)
    >>153
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
    実践ハイパフォーマンスMySQL 第2版
    Linux-DB システム構築/運用入門

    読みことをオススメする。
    ネットに転がってるのは初歩的なものばかり、有用な情報がないことはないが辿り着くのに時間がかかる。
    英語が読めるならもっといい情報も取り入れれるけどね。

    結局今のところは本の方が勉強に適している。
    167 : NAME IS - 2012/10/30(火) 17:59:17.99 ID:??? (+24,+25,-13)
    >>166
    ありがとうメモっとく
    168 : NAME IS - 2012/10/31(水) 00:36:18.86 ID:??? (+29,+29,-20)
    >>161
    レスきましたよ。
    納得できないって言ったら、認めてくれましたよ。
    丁寧な対応だったので、英語版しばらく使っていようかな?
    169 : NAME IS - 2012/10/31(水) 12:47:12.51 ID:??? (-27,-30,-60)
    selectでただ単に「上から」なら select * from hoge limit 0,1、1,1で取得できるんですが
    UPDATEで同じような事できないんでしょうか?
    update hoge set age=sage limit 0,1、1,1のような
    170 : NAME IS - 2012/10/31(水) 13:18:01.07 ID:??? (+26,+28,-47)
    update にも limit あるよ
    しかし select もそうだけど何がヒットするかわからんクエリを
    よく平気で投げられるな
    171 : NAME IS - 2012/10/31(水) 13:51:25.44 ID:??? (-27,-30,-78)
    とりあえず値を付けておくって感じなんで順番は大丈夫です
    $sql = "UPDATE `table` SET `hoge` = 'val' LIMIT 0,1";
    これで無理だったんですが
    Client API version
    5.0.95
    174 : NAME IS - 2012/10/31(水) 14:47:39.92 ID:??? (+22,+29,-4)
    やはり俺の予想は当たった
    出来ない
    175 : NAME IS - 2012/10/31(水) 15:03:12.55 ID:??? (+38,+29,-26)
    やっぱりですか・・・。
    全て重複するレコードがあるので
    判別する為にprimary_keyみたいなのをとりつけようと思ったのですが
    既にレコードがあるので後から付ける事は出来ないですし、上から一つずつ取り出して値付けていくしかないかなと思い
    176 : NAME IS - 2012/10/31(水) 15:06:35.56 ID:??? (+31,+29,-19)
    いや、該当レコードを特定する手段を考えればいいだろ
    やり方がそもそもおかしいし、途中を選ぶ必要なんてないだろう。
    177 : NAME IS - 2012/10/31(水) 15:07:53.85 ID:??? (+36,+29,-52)
    UPDATE一発で連番を一気につける方法はあるけど、
    そもそも>>175の件だって、既に登録したものはWHEREではじけばいいだけだろう。
    178 : NAME IS - 2012/10/31(水) 15:12:15.51 ID:??? (+33,+29,-35)
    >>176>>177
    なんで気付かなかったんだろうかそのやり方
    本当にありがとうございました、自分がアホなだけでした
    182 : NAME IS - 2012/11/01(木) 08:03:05.73 ID:??? (+27,+29,-25)
    -からスタートするのとかはみた事無いが
    理論的には可能、ただしやる必要性がねぇ
    183 : NAME IS - 2012/11/02(金) 17:20:05.70 ID:??? (+27,+29,-1)
    184 : NAME IS - 2012/11/03(土) 09:56:44.30 ID:??? (-27,-30,-118)
    プライマリーキーを削除しようとして

    alter table test drop primary key;

    ってやったらクエリOKって出たんですが、
    show columnsやdescコマンドでカラム情報を見るとまだ、keyのところにPRIって書いてるんですが、
    これって本当にプライマリーキー削除されてるんですか?

    ちなみにもう一度削除しようとすると、
    「削除できません。そのキーが削除されてるか各二にしろ」ってエラーが出ます。
    185 : NAME IS - 2012/11/03(土) 14:14:36.00 ID:??? (-29,-29,-59)
    MySQLを数日起動させておくと、Key_blocks_unusedが徐々に0になっていくんですが
    これは単に割り当ててるメモリが足りてないって事ですか?
    メモリが足りていれば、どこかのラインで増えたり減ったりの均衡状態に入るものですか?
    187 : NAME IS - 2012/11/06(火) 10:24:14.90 ID:??? (-25,-30,-103)
    質問です
    phpでmysqlの`time`テーブルにUNIX時間の形式で
    `hoge`
    1352164724
    1352164824
    1352164124
    を10万件程保存しておいて
    これらの時間帯での個数を調べたいのですが
    SELECT `hoge` FROM `time`
    で全部取り出してからphpで全ての時間帯を調べるのと、MySQLで時間帯調べるのどっちが早いのでしょうか?

    それともこんな事やってる自体設計ミスであり、01時、22時と最初から記録しておくべきなのでしょうか?
    188 : NAME IS - 2012/11/06(火) 10:42:08.14 ID:??? (-29,-30,-85)
    1カラム目をidって言う名前でprimary keyとauto_incrementを設定してるんですが、

    5カラム目の値を

    update test set aaa = 1 where id = 1;


    って指定するんですが、

    duplicate entry 1 for key primary


    ってエラーがでます。

    別に1カラムめのIDを変更しようとしてるわけじゃないんですがなぜでしょうか?
    189 : NAME IS - 2012/11/06(火) 11:13:30.17 ID:??? (-25,-30,-73)
    >>188は忘れてください
    別の質問なんですが、主キーが削除されません。

    alter table drop primary key
    でクエリおkって出て、もう一度削除しようとするとプライマリキーがありませんって出るんですが、
    show columnsやdescで見るとkeyのカラムにまだPRIってかかれています。

    どうやったら消えるのでしょうか?
    190 : NAME IS - 2012/11/06(火) 11:19:08.46 ID:??? (-27,-26,-1)
    >>187
    設計ミスの可能性99%
    191 : NAME IS - 2012/11/06(火) 11:28:10.54 ID:??? (+27,+29,-19)
    >>189はとりあえずカラムごと消して作り直したらプライマリキー消えました
    でもalter tableで消えないのは納得してないので原因わかるかたいたら教えてください
    192 : NAME IS - 2012/11/06(火) 11:44:57.95 ID:??? (+24,+29,-25)
    >>187
    10万回も日時を計算する事がどれだけ処理繰り返すか考えるだけで
    前者の二つであるphp&mysqlでの計算は論外って理解できないのか?
    193 : NAME IS - 2012/11/06(火) 13:44:59.95 ID:??? (+19,+17,-19)
    >>191
    再現しないから何とも。
    消す前だったらSHOW INDEXES見たら? て感じだったけど。
    194 : 190 - 2012/11/06(火) 15:45:49.64 ID:??? (-23,-30,-81)
    ふと思ったが1000万件の大規模なdatetime型を「毎月5日」「水曜日」を検索すると数秒かかるが
    datetimeの他に月(1-12)日、(1-31)、曜日(0-6)
    と三つのカラムをint型で作って保存したらめちゃくちゃ高速にならないか?
    195 : NAME IS - 2012/11/06(火) 16:15:10.30 ID:??? (+30,+29,-51)
    >>194
    オプティマイザーは基本的に1つしかインデックスを使わないから、
    検索クエリに準じただけインデックス作る羽目に遭うのでオススメできない。
    ○月×日、○月の△曜日、月日問わず△曜日だけ…だけでも3つ必要になる。

    datetimeをパーティションキーにしてパーティションするのが良いんじゃない?
    196 : NAME IS - 2012/11/06(火) 16:18:11.70 ID:??? (+27,+29,-18)
    > オプティマイザーは基本的に1つしかインデックスを使わないから
    へー、初耳
    パーティショニングするにしてもtableが100個以上あったら設計ミスだから
    1秒以内とかは難しいか
    197 : NAME IS - 2012/11/06(火) 16:50:46.93 ID:??? (+27,+29,-6)
    インデックスは二つ使えるがな
    一つはインデックス、もう一つは並び順
    199 : NAME IS - 2012/11/07(水) 09:27:21.34 ID:??? (-27,-30,-33)
    試せっていわないでください

    insert into test values(select id from abc where str = 's')

    みたいにvaluesに直接selectの実行結果をいれることは可能でしょうか?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について