• ベストアンサー

mysqlの結果の速度はデータの違いで変わるのか

カラムに同じデータしか入れない場合(Aカラムの全てのレコードの値は’テストです’しか入ってない) とバラバラに入れる場合、実行後の速度の結果は変わるのでしょうか。 実行速度の検出をするときはデータをバラバラに入れた方がいいでしょうか。 同じデータの場合は、updateで各カラムの値を1つセットで全てのレコードを更新するだけでよいですが、バラバラの場合は、上記の他にレコードを細かく範囲を分けてデータを入れたり、ランダムを使って数字を作ったり…といろいろすることになり面倒です。

  • MySQL
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

変わります と言うより同じデータしかないデータベースでは性能測定はできません。 実データに近いデータ分布・データ内容で試験をすることが鉄則です(実データを使えればなおよし)

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

意図がわからないのですが Aカラムのデータがすべて一緒だとわかっているであれば、 投入しなくてもいいのでは? 仮にバラバラでもインデックスしだいで高速化ははかれます

関連するQ&A

  • MySQLで更新の結果を知るには

    こんばんは 業務で以下の切り分けをしたいのですが、可能でしょうか。 SOAP通信を使っていて、パフォーマンス的な観点から、select文は使用したくないと思っています。 ■環境 ・PHP5 ・MySQL ・FreeBSD6 ■やりたいこと Update文で更新を行ったときに、データそのものがなくて更新できなかったのか、データは存在するがPK以外の条件がマッチしなくて更新できなかったのかで、エラーコードを分けたい 例えば、  update tableA set column1='aaa' where pk1=1 and pk2=2 and column2='bbb'; といったSQL文で、「pk1=1 and pk2=2」に合致するデータがないのか、データは存在するが「column2='bbb'」には合致しなくて更新されないのかの切り分けをしたいのです。 かなり、困ってしまっています。 SQL文でできない場合でも、何かしらの解決方法がありましたら、よろしくお願いいたします!!!

  • MySQLのUPDATE文について

    以下のようなスクリプトを書いた時に、phpMyAdminで、テーブルの中身をみると、 photo カラムには、添付画像ファイルのファイル名の値が入っているのに、 bbs.php側からアップデートしようとすると、ip_add以下passwordまでのカラムの 中身が空なのです。SQLの文法的に何かまちがってるでしょうか? 一応、ラストレコードのカラムを更新することを念頭に置いておりますが。 <file_upload.php> $sql = "INSERT INTO bbstbl_test (photo) VALUES('$upfilename');"; -------------------------------------------------------------------------------- <bbs.php> $sql = "UPDATE bbstbl_test SET ip_add = $ip_add, date = $date, name = $name, email = $email, title = $title, message = $message, password = $password;";

    • ベストアンサー
    • PHP
  • データが更新されません

    Access2002です。 「DVDNum」テキスト型 インデックス はい (重複あり) 「ID」長整数型 はい (重複あり) の2列で構成されているテーブル「DVDinfo」があります このデータで DVD-01 1 DVD-01 2 DVD-01 3 DVD-02 4 DVD-02 5 DVD-03 6 DVD-03 7 DVD-03 8 DVD-04 9 ・・・ (IDの列は飛び数字はありません) の状態で新規に DVD-02 6 を入れたいのです ただしIDは上記のように連番にしたいので まず先にInsert前の6以降を全部+1してから 新しいデータを挿入しようと考えました。 そのUPDATE文は UPDATE DVDinfo SET ID = ID + 1 WHERE 収録ID >= 6; としたのですが、実行しようとすると エラー「更新クエリですべてのレコードを更新できません ・・・2件のレコードでキー違反、・・・レコードを更新できませんでした」 とでます。 DVD-03 6 ・・・A DVD-03 7 ・・・B DVD-03 8 ・・・C で恐らく6が7になろうとしBと重なる、7が8になろうとしCと重なる の2件がキーに違反するって言うことだと思います。 私の目的はある値から指定した分値を増やしたいのですが この場合はSQLを直すのかデータの構造が直すのか 教えて欲しいです。 最終的に DVD-01 1 DVD-01 2 DVD-01 3 DVD-02 4 DVD-02 5 DVD-02 6 DVD-03 7 DVD-03 8 DVD-03 9 DVD-04 10 ・・・ となって欲しいのです よろしくお願いします

  • ExcelVBAでMySQLのAUTO_INCREMETを

    まず、MySQLで作ったデータベースにAUTO_INCREMETに設定したフィールドがあります。 そして、ExcelVBAのADOで新しいレコードを追加した直後にそのフィールドの値 を取得しようとしています。 レコードセット.addNew レコードセット.update レコードセット.MoveLast としても、取得できるのは更新前の値です。 開くときはadOpenDynamic, adLockOptimisticにしているのですが、 他に何か問題があるのでしょうか? ちなみに、一旦closeした後は新しい値が取得できます。

    • ベストアンサー
    • MySQL
  • MySQL+PHP 特定レコードの更新と作成

    MySQL+PHPの初心者です。 特定レコードの変更または新規作成のサンプルなどあればお教えいただけるでしょうか。 例えば特定商品の単価のレコードがあれば新しい単価に変更と そのレコードが無ければ新規にレコードを作成するようなケースになります。 VBAなどでは検索のSQL文からレコードセットを作成し レコードが無い場合は レコードセット名.addnewで必要なフィールドに 値をセットし レコードセット名.update 該当するレコードがあった場合は レコードセット名.edit で必要なフィールドに 値をセットし レコードセット名.updateなど簡単な処理なのですが MySQL+PHP の場合データの検索と新規レコードの単純な記述は ある程度はわかるのですが上記のようなケースは実際どのように 書かれているのかお教え願えると幸いです。 商品単価テーブルには商品コードと単価のフィールドになります。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 同テーブルで指定カラム値を相互更新(入替)したい

    下記のようなカラムがある時、DBから取得した値を、引数(並べ替え順)に応じて、(同じカラムを)更新するSQL文を教えてください ●カラム id1 sex1 age1 id2 sex2 age2 id3 sex3 age3 id4 sex4 age4  ●引数例 3 1 2 ※1番目が3、2番目が1、3番目が2 ・「1の数字が付いたカラムの値」を、「3の数字が付いたカラムの値」で更新したい ・「2の数字が付いたカラムの値」を、「1の数字が付いたカラムの値」で更新したい ●質問 ・MySQLだけで処理可能でしょうか? UPDATE テーブル名 SET id1=(SELECT id3 FROM テーブル名 WHERE id1=id3値),sex2=(SELECT sex3 ……; ・それとも、一度、全ての値を取得して、PHP等で処理するのでしょうか? UPDATE テーブル名 SET id1=id3値,sex1=sex3値,age1=age3値,id2=id1値 ……; ・他に何か良い方法はあるでしょうか(一旦別テーブル作成後、戻す等) ●環境 MySQL5.1

    • ベストアンサー
    • MySQL
  • 作成したSQLの単体テスト【エビデンスの取り方】

    作成したSQLの単体テストをするにあたって、エビデンスの取り方に悩んでおります。 テストケースとしては、 抽出した項目が正しく設定されているか、ホワイトボックスの観点から、 条件に一致する場合、しない場合で期待した値が設定されているか、などです。 抽出したものは50件のレコードで、カラムは15個程度あるとします。 エビデンスは今まではプリントスクリーンで画面キャプチャを取得して、 エクセルに張り付けていました。(SQLを使わないものの単体テスト) そしてインプットとアウトプットのデータを、テストケースのNoに合わせたファイル名にして、 フォルダに格納しておりました。 しかしSQLのテストとなると、どのようにまとめればいいか悩んでおります。 例えばあるカラムが正しい値になっているかというのは、抽出した60件のレコードのうち1レコードをコピーして、エクセルに張り付け、「このカラムのところに○○という値が設定されているため正しい」というようにするのでしょうか。 そうなるとカラムが15個あるので、15個のカラムが正しい値に設定されているかのチェックは 最低でも15個のテストケースが出来上がります。 テストケース(1):カラムAAAの値が○○であること テストケース(2):カラムBBBの値が△であること テストケース(3):カラムCCCの値が□であること    ・    ・    ・ テストケース(15):カラムYYYの値がXであること 1つの1つのテストケースに対して1レコードをコピーして、 「このカラムはこの値になっているから正しい」ということを繰り返すことになるのでしょうか。 そしてインプットとなるデータは、そのデータをDBでつかえるようにインサート文を用意すれば良いのでしょうか。 意味が伝わりにくい文章になってしまいましたが、エビデンスの取り方という点で、 どのように工夫すれば良いのか教えていただきたく、質問致しました。

  • csvファイルを使ってMySQLのテーブルを更新し

    約2万件ある15個のカラムで構成されるMySQLのテーブルがあります。 このテーブルをcsvファイルを使って更新しようと考えています。 csvファイルにはレコードIDとあるカラムの変更する値の2つのセルで 構成されています。 行数は毎回異なりますが、だいたい300行前後です。 csvファイルの具体的イメージはこんな感じです。 id order ============ 2,  200 4,  10 7,  460 11,  35 MySQLのテーブルの方にも「id」と「order」というカラムが存在します。 java や PHP を使ってやる方法はわかるんですが、プログラムを作成しないで SQLだけで行いたいと考えています。 LOAD DATA LOCAL INFILE などがあることがわかったのですが、レコードを REPLACE  するのではなく、一部のカラムをアップデートしたい、ということです。 どなたか、教えて頂けると助かります。 よろしくお願い致します。

  • MySQL側で計算してもらってレコードを更新できるか??

    質問があるのですがよろしくお願いします。 例えば、「point」というカラムのレコードの数値を+1して更新したい時に、 update文の中に「id~番のレコードの、「point」のカラムの数値を+1する」みたいな命令を書いて、 MySQL側で計算してもらってレコードを更新することは出来るのでしょうか? それとも、やはり一度select文で数値を取り出して、 perlやPHP等のミドルウェア側で数値を+1してからupdate文で更新するしかないのでしょうか? どなたか分かる方いらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • MySQL
  • 複数テーブルからデータを取り、updateする

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1211685 にも同じような質問があったのですが、同様の処理でうまくupdateされません。分かる方がいらっしゃいましたら教えてください。 今、テーブルが2つ(table1、table2)があり、それぞれ2つのカラム(column1、column2)を持っています。ここで、それぞれのカラム2が等しく、カラム1が指定した値のレコードのみ値をupdateしたいです。 update table1 set column1 = 'AAA' from table1,table2 where table1.column2 = table2.column2 and table1.column1 = 'BBB' and table2.column1 = 'CCC' としたところ、「from table1,table2 where 」の辺りに間違いがあると表示されます。 上の例とどう違うのか分かりません。 よろしくお願いします。m(__)m