質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

1回答

346閲覧

webアプリにおける複数のレコードを対象にしたsqlの実行速度

keraker

総合スコア46

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/09/01 08:24

編集2022/01/12 10:55

複数のレコードを削除したいです。
この場合、条件がひとつ、あるいは少ないクエリを複数回発行するのと、
where ... or ... などとorでつなげてまとめてひとつ、あるいは少数のクエリを発行するのではどちらが速いのでしょうか。

またこのほかのやり方はご存知ではないでしょうか。
そしてこの結果はdelete以外の文にも適用されますか。
くわえてwebアプリとローカルでは結果は変わりますか。

どれかひとつでもご存知の方がいたら、
どうかよろしくお願いします。

追記
まだデータが無く、実際に試すことができないので、とくに複雑なクエリを少数と簡単なクエリを多数、もしくはBEGIN、ENDで簡単なクエリをまとめて実行のどれがよいかをよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

この場合、条件がひとつ、あるいは少ないクエリを複数回発行するのと、

where ... or ... などとorでつなげてまとめてひとつ、あるいは少数のクエリを発行するのではどちらが速いのでしょうか。

状況次第です。テーブルにあるデータ量やインデックス構造、データの偏りにも左右されるかもしれません。

そしてこの結果はdelete以外の文にも適用されますか。

「状況次第」というのは全てに共通します。

投稿2020/09/01 08:27

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/09/01 08:28

> またこのほかのやり方はご存知ではないでしょうか。 全レコードを削除したい場合は、TRUNCATEという専用の構文があって、大体の場合最速です。
maisumakun

2020/09/01 08:36

気になったら、データベースサーバにEXPLAINを投げて、どのように処理が行われるのかの詳細を確認してみましょう。それがいちばん確実な方法です。
keraker

2020/09/01 10:13

ありがとうございます。 ざっくりとした関係性がわかるページなどはありませんか。
keraker

2020/09/01 10:15

とくにwebアプリではクエリの複雑さと回数のどちらがボトルネックになりやすいか知りたいです。
maisumakun

2020/09/01 10:34

> とくにwebアプリではクエリの複雑さと回数のどちらがボトルネックになりやすいか クエリの内容次第、としか言いようがありません。 たとえば、「もともと1億件あるデータから正規表現で絞り込んで半分を消す」というのと、「500件のデータからIDがわかっている3つを消す」というのでは、考え方から違ってきます。
maisumakun

2020/09/01 10:36 編集

・全体のデータ量 ・消すべきデータ量 ・消すデータの絞り込み方法 ・テーブル構造(データ型・インデックス) ・データベースエンジンの種類・バージョン 最低限、これらが揃わないと議論を始めることすらできません。
keraker

2020/09/01 11:13

ありがとうございます。 >たとえば、「もともと1億件あるデータから正規表現で絞り込んで半分を消す」というのと、「500件のデータからIDがわかっている3つを消す」というのでは、考え方から違ってきます。 この例だとどのようになるのでしょうか。データベースエンジンはmysqlでそのほかの条件は穏当な条件でお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問