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

    私的良スレ書庫

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

    元スレMySQL 総合 Part13

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1064 + - limit + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 : NAME IS - 2008/05/24(土) 21:17:02 ID:??? (+48,+30,+0)
     
    853 : NAME IS - 2008/05/25(日) 13:58:22 ID:CfdJAAug (+29,+29,-135)
    まぁ単に
    結合条件をFROM句に書いたか
    WHERE句に書いたかの違いだけだと思うけど。
    性能の違いはないんじゃないかな?
    1のように結合条件をWHERE句にごちゃごちゃとかくよりも
    2みたいにFROM句に書いたほうが
    テーブルとの関係が分かりやすいのはあるかもね。
    でも自分は1の方法が多いかな。

    以上、末節ながら。。。
    854 : NAME IS - 2008/05/25(日) 15:30:43 ID:??? (+75,-30,-101)
    MySQL5.1で2GBほどのデータベースをインポートしているんですが、すでに170時間以上経過しています
    DB元のサイトによると予想時間が八時間ということですが、同じように予想時間二時間のファイルをインポートした時は16時間かかりました
    170時間以上経過というのは異常でしょうか? また原因はどこにあるでしょうか?
    スペックはCPU:Celeron2.2G,Mem:DDR333の512MB,HDD:UltraATA/100の40GB、Ubuntu8.04上で動かしています
    855 : NAME IS - 2008/05/25(日) 15:50:29 ID:??? (+37,-28,-41)
    >>854
    MySQL詳しくないんだが、インポートの途中経過とかログに出せないの?
    CPU使用率とかディスクアクセス見るしかない?
    856 : NAME IS - 2008/05/25(日) 15:54:12 ID:??? (+67,+29,-51)
    >>855
    作業を始めてからGUIの動作を受け付けなくなりましたorz
    さっき調べたら途中経過を出すステートメントを見つけましたが、作業中でコマンド入力不能……

    一度落としてデータベースを空にしてから再開しようかと迷ってます
    857 : NAME IS - 2008/05/25(日) 17:20:47 ID:??? (+63,+29,-26)
    >>854
    メモリーが少なすぎないか?
    せめて1GBは無いと、その規模では予想時間の倍の時間がかかるイメージ。
    858 : NAME IS - 2008/05/25(日) 18:14:09 ID:??? (+9,-29,-76)
    >>854
    データベース区切った方が早いよ
    自分の場合、1GBちょっと約700万のデータを50万レコードごと区切って入れたら1時間くらいだった。
    あと基本だけど
    ・リモートよりサーバにUPしてから、コマンド打って入れたほうが数倍早い
    ・INSERT文はマルチインサートの方が数十倍早い
    ・インデックス貼ってるなら削除してからの方が早い

    因みに環境はCPU:Athlon 3200 ,Mem:1GB
    859 : NAME IS - 2008/05/25(日) 21:50:45 ID:??? (-1,-29,-17)
    charとvarcharが拡張されて65535バイトまで格納できるようになった今
    text型を使う意義ってあるのでしょうか?
    860 : NAME IS - 2008/05/26(月) 08:30:12 ID:anlWXK4f (+24,+29,-18)
    text型は例えば「備考」とか「理由」とかいう長文が入る可能性のカラムに対して
    明示的に使うことがあるよね。
    861 : NAME IS - 2008/05/26(月) 08:35:58 ID:??? (+11,-16,-2)
    txtにしないと内部検索できねーだろ
    862 : NAME IS - 2008/05/26(月) 14:24:40 ID:??? (+23,-30,-271)
    お忙しいところ恐れ入ります。下記のように設定したいのですが、
    syntaxエラーが出てしまい困っております。
    どのように改修したら宜しいでしょうか?
    アドバイス頂ければと思います。

    create table m_user(
    No integer PRIMARY KEY AUTO_INCREMENT,
    ID char(8) UNIQUE KEY,
    password varchar(20),
    name varchar(20),
    mail_address varchar(50),
    authority varchar(2) NOTNULL);

    エラー内容は下記です。
    ERROR 1064 (42000): 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 'NOTNU
    LL)' at line 7
    863 : 862 - 2008/05/26(月) 14:42:08 ID:??? (-1,-29,-25)
    追記で申し訳ありません。
    MYSQLのVerは5.0です。
    宜しくお願いいたします。
    864 : NAME IS - 2008/05/26(月) 14:46:05 ID:??? (+31,-29,+1)
    NOTNULL じゃなくて NOT NULL でしょ。
    865 : 854 - 2008/05/26(月) 14:51:12 ID:??? (+57,+29,-34)
    メモリ増設してきました!
    一気に三倍の1.5GBにして、HDD領域も少し増やして、改めてテーブルを用意して流し込んでます
    結果が出たらまた報告しますね
    866 : 862 - 2008/05/26(月) 14:53:13 ID:??? (+59,+29,-3)
    >>864
    ありがとうございました。
    なんという・・・俺バカ><
    ありがとうございました!
    869 : NAME IS - 2008/05/26(月) 21:52:09 ID:??? (+34,+6,-3)
    とりあえず -p なしにしてみたら、どうなる ?
    871 : NAME IS - 2008/05/26(月) 22:12:38 ID:??? (+2,-25,-3)
    とりあえず -q つけてみたら、どうなる?
    872 : NAME IS - 2008/05/26(月) 22:18:08 ID:t8RRxsu7 (+24,+29,-5)
    -pって付け足しても同じようなのが出てきました。
    873 : NAME IS - 2008/05/27(火) 02:23:53 ID:mN2Gb71B (+13,+23,-18)
    インスコした時のぱ素ワード入れろよ
    874 : NAME IS - 2008/05/27(火) 03:55:09 ID:??? (+3,-29,-137)
    商品テーブルにある、商品単価*数量の結果を
    注文明細テーブルにある金額カラムに
    自動でインサートしたいんですが何か方法はありますか?

    たとえば、
    商品単価=100
    数量=3
    だったら、自動で金額カラムに300とインサートしたいです。
    数量を4に変更したら金額が400になって欲しいです。
    875 : NAME IS - 2008/05/27(火) 03:58:05 ID:??? (-2,-25,-17)
    サブクエリでいいのでは?
    876 : NAME IS - 2008/05/27(火) 03:58:35 ID:??? (+57,+29,-4)
    バージョン書いてないから、解らんけど、トリガー使えば?
    877 : NAME IS - 2008/05/27(火) 05:31:49 ID:??? (+23,-4,-17)
    明細インサート、アップデート時に、その計算項目入れれば
    878 : NAME IS - 2008/05/27(火) 10:59:28 ID:??? (+3,-30,-51)
    Oracleのストアドプロシージャだと、
    INSERT文の中に、算術記号も使えた。

    INSERT INTO tbl (金額) VALUES (商品単価*数量);

    MySQLも似たようなことが出来るはず。
    879 : NAME IS - 2008/05/27(火) 13:35:56 ID:??? (+43,+15,-5)
    「はず」じゃなくて、5.0からできる
    880 : NAME IS - 2008/05/27(火) 19:03:30 ID:??? (+83,+29,-47)
    皆さんテーブル名やカラム名は、普通どんなフォーマットにしてる?
    「TABLE_NAME」とか大文字とアンダバー組み合わせて統一?

    本やググっても「これが定番」という資料がみつからないんで、ちと困ってます。
    881 : NAME IS - 2008/05/27(火) 19:05:03 ID:??? (+31,-29,-3)
    itirou とか matui とか matuzaka とかにしてる
    882 : NAME IS - 2008/05/27(火) 19:08:35 ID:??? (+12,-29,-28)
    >>880
    別に特に気にしてない。気分次第かな。
    カラム名については、外部参照するようなidなんかは、
    "なんたら_id"みたいな感じ。
    ちなみに、大文字小文字については、Unix環境だけでなく、
    まったく同じ構成のDBをWin環境でもテストとかするから、小文字で統一。
    883 : NAME IS - 2008/05/27(火) 19:14:31 ID:??? (+18,-9,-32)
    SQLの予約語を大文字で書く習慣があるからテーブルやカラム名は小文字
    884 : 880 - 2008/05/27(火) 19:34:23 ID:??? (+62,+29,-2)
    >>881-883
    なるほど。参考になります。
    小文字に統一しとこう。ありがとうございます。
    885 : NAME IS - 2008/05/27(火) 21:15:40 ID:??? (+9,-29,-12)
    >>880
    2byteだけはやめとけ。
    英語でもローマ字表記でもいいから、ASCII文字の方がOSが変わっても扱いやすい。
    886 : NAME IS - 2008/05/28(水) 00:37:08 ID:??? (+45,-30,-125)
    hoge
    -----------------------------------
    id int
    name VARCHAR(128)
    priority TINYINT(2) DEFAULT 1
    -----------------------------------

    こんなテーブルがあったとして以下の条件でデータをとるにはどうすればいいでしょうか?

    カラムは5つ
    ランダムでとる
    priority(優先度)が高いものが選ばれる可能性を高くする


    5つとる・ランダムは以下でできますが
    SELECT * FROM `hoge` Order By rand() limit 0,5;
    優先順位を考慮に入れるとり方が思いつきません。
    正確(完璧なアルゴリズム)ではなくてもいいのでご鞭撻のほどお願いします。
    テーブルのつくりに問題がある場合もおっしゃっていただけると助かります。

    今考えているのは
    先に優先順位でソートして上位数件取得
    そこからランダム取得
    です。
    887 : NAME IS - 2008/05/28(水) 02:27:58 ID:??? (+68,+29,-32)
    >>886
    優先順位が高いと当たる確立が上がる という意味でしょうか。
    その場合でしたら、やり方はいろいろあるでしょうけど、
    シンプルなのは優先順位の値に従い該当レコードを
    重複させたリストを作り、それに対してランダム取得など。
    888 : NAME IS - 2008/05/28(水) 03:40:11 ID:??? (+9,-30,-186)
    >>886
    今即席で考えてみた。
    priority の値を1~5として、
    select *,(rand()*5 + priority) as rand_col from hoge order by rand_col desc limit 1;
    みたいな感じでどうか。(実際はpriorityの数値と、rand()*nのnを適切に与えてやらないといけないが・・)

    上の例を、レコード5件、priorityを1.2.3.4.5としてやってみて、10000回の結果(それぞれのidが最大になった回数)
    (priorityの値が大きいほうが選ばれやすい。言葉の意味的には逆なような気が??)
    1 = 28
    2 = 259
    3 = 1058
    4 = 2767
    5 = 5888

    割合的には、(約)1:10:40:100:200
    もっときれいに分かれるかと思ったけど、微妙だな・・・。
    (文系脳ではここら辺が限界、スマソ)
    890 : NAME IS - 2008/05/28(水) 10:49:33 ID:??? (+15,-30,-41)
    init-connect='SET NAMES utf8'
    892 : NAME IS - 2008/05/28(水) 15:40:03 ID:NgaxVuoB (+49,+30,+0)
    DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
    DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
    DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
    DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
    ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
    死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
    死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
    死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
    死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
    苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
    苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
    苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
    苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
    死ぬとき このレスの事思い出してから地獄いけよ
    ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
    893 : 889 - 2008/05/28(水) 17:31:34 ID:xeQEQXZc (+26,+29,-3)
    >>890
    どこの部分に書き込めばいいんですか?
    894 : NAME IS - 2008/05/28(水) 18:18:08 ID:??? (-6,-29,-2)
    [mysqld] で
    895 : NAME IS - 2008/05/28(水) 18:48:13 ID:??? (+34,+5,+0)
    >>892
    落ち着けw
    896 : NAME IS - 2008/05/28(水) 19:38:46 ID:??? (+61,+29,-32)
    MySQLでPHPのアプリ作ったら、アプリのソース公開しなきゃいけないっていうのは本当ですか?
    GPL汚染とはいえ、SQL叩いただけでというのは意味が分からないんですが・・
    897 : NAME IS - 2008/05/28(水) 20:05:24 ID:??? (+31,-29,-50)
    レプリケーションについて、MySQLのマニュアルに、
    「MySQL 4.0.2 はレプリケーション目的には適しません」
    とありますがこれは何故なんでしょうか?
    現在4.027を使っています。
    898 : NAME IS - 2008/05/28(水) 20:15:15 ID:??? (+4,-30,-128)
    主キーを追加するのに
    ALTER TABLE address ADO PRIMARY KEY (NUMBER);と入力したら、

    ERROR 1064 (42000): You habe an error in your SQL syntax; check the manulal that
    corresponds to your MySQL serber version for the right syntax to use near
    'ADO PRIMARY KEY(number)' at line 1

    とゆうエラーが出たんですけどどうゆう意味ですか?
    899 : NAME IS - 2008/05/28(水) 20:15:38 ID:??? (+15,-29,-17)
    >>896
    アプリ販売するなら一応そうだけど、MySQL+PHPの場合は回避されるはず。それで一回MySQLのサポート外したから>PHP
    900 : ほい! - 2008/05/28(水) 20:51:36 ID:3lvkdlof (+24,+29,-37)
    ほい!
    「にっこっこ掲示板」ヤフーで検索してみ!「にっこっこ」でOK
    新しいの誕生したよ
    まだ規制ないし、色々貼れる
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1064 + - limit + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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