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

私的良スレ書庫

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

元スレMySQL 総合 Part17

mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
551 : NAME IS - 2010/03/17(水) 18:06:02 ID:??? (-27,-29,-17)
DBIならCOUNT(*)使うのが正道なんじゃないのかなぁ
552 : NAME IS - 2010/03/17(水) 18:34:33 ID:??? (+23,+29,-28)
>>551
countのために2回SQLを発行することにより、コストがかかると
判断したため質問させていただいたのですが、やはりcountしか
ないですかね。。

ご返答有難うございました。
553 : NAME IS - 2010/03/17(水) 18:40:44 ID:??? (+16,+15,-57)
countのために別SQL発行することででコストがかかると思う人は多いけど
件数によってはselectで最終行までフェッチする方がよほど負荷がかかるので
結果的にはcountの方が軽いことが多い。
554 : NAME IS - 2010/03/17(水) 18:49:35 ID:??? (+28,+29,-20)
>>553
なるほど。そうなんですね。
一つ勉強になりました。

固定概念は怖いですね。
有難うございました。
557 : NAME IS - 2010/03/17(水) 22:16:28 ID:??? (-24,-29,-17)
ID | DATA
-----------
1  aaaa
2  aaaa
3  bbbb
4  aaaa

とあったときに
DATAカラムで一番多いデータから取るにはどうすればいいでしょうか?
多い順にランキングにしたいのです
558 : NAME IS - 2010/03/17(水) 22:35:47 ID:??? (-23,-30,-52)
>>555

A)
SELECT * FROM TABLE1をやって全件フェッチして件数を知る。

B)
SELECT COUNT(*) FROM TABLE1
SELECT * FROM TABLE1
の2回のSQLを発行する

ではB)の方がいいよ、という話をしているのです。

>>554
ついでに言うとCOUNT(*)よりもCOUNT(主キー)の方がいいかも。
559 : NAME IS - 2010/03/17(水) 22:44:04 ID:??? (+22,+21,-36)
>>558

B)の2回目の結果は取得しないのかい?だったら何のために発行するの?
561 : NAME IS - 2010/03/17(水) 22:58:49 ID:??? (+32,+29,-96)
>>559
えーと、実装というかアプリの仕様によるけどさ

たとえばGoogleの検索結果みたいなことをやりたいとして
トータル1万件中先頭の10件を表示してますと。
そこで、検索時点で何件かわからないので全件フェッチ
しましたなんてアフォな実装しないでしょ?

トータル件数を知りたいのは大抵フェッチ前で
最終行に行った後にはむしろどうでもいい情報じゃん?

そういうことをやりたいって話じゃないの?
566 : 557 - 2010/03/18(木) 00:19:57 ID:??? (+9,+20,+0)
>>564
ありがとうこざいます!
568 : NAME IS - 2010/03/18(木) 01:03:28 ID:??? (-28,-30,-308)
>>550-558あたり
ちゃんと公式(MySQL)のdocument読んでる?
っつても質問でサーバのバージョン書いてないから100%使えるとは言えないけど、例えば、

SELECT * SQL_CALC_FOUND_ROWS FROM `table` limit 10;

ってクエリを投げて、検索にマッチするのが10件以上の場合、続けて、

SELECT FOUND_ROWS();

をかければ、一回目のクエリでの合計ヒット件数が取得できる。

確かに、これも厳密に言えば二回DBにクエリを投げてることにはなるんだけど、
一回目の結果を内部的(クライアントスレッドのメモリ上?)に保存しているので、
実質二回目はDBやテーブルを触らない。

Table_TypeがMyISAMで、SELECT * FROM `table`; (whereなし)の場合は、
テーブルが格納件数をテーブルデータとは別に持っているので十分に早いが、
whereやgroup by、order by なんかを多用した時は、件数を数えるだけでも
それ相応のコスト(時間)がかかる時もよくある。

ちなみに自分の確認しているのでは、4,1系でもこのOptionは利用可能。
それより古いバージョンは知らない・・。
569 : NAME IS - 2010/03/18(木) 01:13:43 ID:??? (+16,+28,-45)
>>560
特にデータを分離しなければならないわけでなければ、
1-a)一択だと思う。
テーブル構成の同期を保つのに気を使う必要もないし、
全く同一のアプリが全く同一の設定で使えるし。
571 : 568 - 2010/03/18(木) 01:46:59 ID:??? (-27,-30,-100)
>>570
selectクエリで、$sth->rows で件数を取得できない、
ってなったら、あと考えられるのは limit 条項しかないと思うが・・。
自分的には>>561的なことがしたいじゃないかと思った。

> >$sth->rowsはupdateやdelete等を行って処理した数を 
> >返すものです。 
> へえ、うちのPerl+DBIとは違うようだ。
ココの部分についは、全く同意。
572 : NAME IS - 2010/03/18(木) 03:16:13 ID:??? (-26,-30,-79)
556は多分ここを見たんだと思うなぁ
http://homepage3.nifty.com/hippo2000/perltips/dbimemo.htm#item_rows
>通常、rowsはdo またはSELECT以外(UPDATEやDELETEのようなある種の操作)のexecute または、SELECTステートメントのすべての行を取り出した後にしか、信用できません。
573 : NAME IS - 2010/03/18(木) 04:12:58 ID:??? (+13,+18,-2)
>>572
10年前のドキュメントか。w
579 : NAME IS - 2010/03/18(木) 14:37:56 ID:??? BE:988605195-2BP(0) (+23,+29,+0)
>>578
それでいけましたーどうもです。
581 : NAME IS - 2010/03/19(金) 02:02:32 ID:??? (+27,+29,-13)
でもまぁDB差し替えを検討することは十分あり得るとも思うけどね。
582 : NAME IS - 2010/03/19(金) 08:11:52 ID:??? (-6,-3,-11)
>>581
スレ違い
583 : NAME IS - 2010/03/20(土) 07:43:41 ID:??? (+15,+28,-30)
>>550
あるよ。PDOには用意されてるからPerlのライブらりんにもあるだろたぶん。
584 : NAME IS - 2010/03/20(土) 23:11:35 ID:??? (+30,+29,-47)
皆様色々と有難うございました。

私もマニュアルを鵜呑みしていたこともあるのですが、
countで対応しました。

今回のSQLがlimitなしのものであったため、同時に
件数も取れないかと思った形だったのですが、色々
とご意見いただきとても勉強になりました。

この場をお借りし御礼申し上げます。
585 : NAME IS - 2010/03/21(日) 00:28:20 ID:??? (-27,-30,-37)
>>584
SELECT SQL_CALC_FOUND_ROWS * FROM unko LIMIT 1;
SELECT FOUND_ROWS();
これやってみ。
586 : NAME IS - 2010/03/21(日) 02:23:40 ID:??? (-26,-29,-75)
カウンタ貸出サイト的な物を作ってるんですが
一人事に別々のテーブル作るってのはナンセンスですかね?
1アカウントで、複数のページのカウントをするので

user_takasi
-------------
url, カウント回数
url, カウント回数
url, カウント回数
url, カウント回数

こんな感じに使用と思ってるんですが
それともみんなまとめて
takasi, url, カウント回数
yosida, url, カウント回数

こうしたほうがよろしい?
587 : NAME IS - 2010/03/21(日) 02:25:44 ID:??? (+14,+21,+0)
当然後者
588 : NAME IS - 2010/03/21(日) 02:29:20 ID:??? (+28,+28,-3)
>>587
即レスありがとうございます
後者のほうで作ってみます
589 : NAME IS - 2010/03/21(日) 14:46:45 ID:kqP9QkWY (+24,+29,-30)
利用規模にもよるけど前者では100ユーザいたら100テーブル
不特定の貸し出しサービスなら、下手したら千人単位になるでしょ
初歩的な仕様バグってやつ
590 : NAME IS - 2010/03/21(日) 15:01:45 ID:??? (-25,-18,-7)
MySQLの限界に挑戦!っす w
591 : NAME IS - 2010/03/21(日) 15:39:21 ID:??? (+27,+29,-11)
初心者がよくやる間抜け仕様ですね。
1年後くらいにこんな仕様を考えた自分を振り返ってみるといい
592 : NAME IS - 2010/03/21(日) 19:07:53 ID:??? BE:363186926-2BP(2) (+36,+30,-98)
MySQLのユーザの皆様、突然MySQL+PHPで業務に耐えうるものをつくれといわれた、ただのWIN使いです
両方を学ぶのに良いサイト・本など教えていただけますでしょうか?
Linux機もないし、レン鯖に直接乗せて勉強していくしかないので効率的にやらないと恐い気がしています。
とりあえず借りたところでテープルはつくっておきました。そんな程度の知識です。
テキストなんだかデータなんだかキャラクターなんだか、なにがなんだかさっぱりわかってません。
よろしくお願いします
593 : NAME IS - 2010/03/21(日) 19:13:50 ID:??? (+38,+29,-72)
>>592
http://moyashi.jp/cake/
とりあえず、WindowsPCに開発環境を作ってやった方が効率的ではあるまいか。
MySQLもPHPもどちらも知らないというなら、
CakePHPのようなフレームワークを学習した方が得な気がする。
594 : NAME IS - 2010/03/21(日) 19:45:08 ID:MG9Sa6dU (+24,+29,-38)
ただでさえMySQL,PHP,JavaScript,HTMLを一気に学習させられるのに
そのうえフレームワーク追加したらパンクしちゃわないか?
595 : NAME IS - 2010/03/21(日) 20:37:34 ID:??? (-14,-12,-25)
むしろ、素人に期間なく対応させるなら、
10分でできる~で紹介されているCRUDだけのWebアプリができれば御の字でしょ。
596 : NAME IS - 2010/03/21(日) 22:16:41 ID:??? (-22,-29,-56)
>>592
手元のWin機に、Eclipse + PDT(もちろん、ApacheとPHPも)の環境を構築した方が
学習・開発・試験には便利だよ。
それで出来上がったらLinux環境に持っていくのも良し。
598 : NAME IS - 2010/03/22(月) 18:09:46 ID:??? (-26,-29,-134)
んー、超初心者だけど、入り口でつっかかってまふ。

1.xamppは動いてる。
2.create databaseでデータベース作る。
3.create tabaleでテーブル作る。

ここまではおけ。

4.レコードを追加する。(insert into)
5.names set sjis;をやる
6.select *で中味を見る

もじばけー。
「1」なんて「『」になっちゃってるし。
日本語入力したところは「??」がいっぱい。

同じ環境で、本の付録のサンプルDBはちゃんと日本語も見えるんだよなあ。
どこが悪い?
どなたか教えてくだされ。
600 : NAME IS - 2010/03/22(月) 19:40:06 ID:??? (-26,-29,-26)
>>599

ありがとー、ってやり直したけど同じだった。
phpmyadminで見たら照合順序が latin1_swedish_ci になってたけど、
これが原因?

どうやったら治せるんだろふ。(泣)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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