プロが教えるわが家の防犯対策術!

例えば、ある文章から特定の文字列が含まれているレコードを呼び出す場合、CPUへの負荷はどの程度ですか?

あるAPIサービスで、111,222,333,444中略999と9回リクエストをしていました。
しかし、実際には”111 or 222 or 333 or 444中略999”とすれば1回のリクエストで必要な情報が呼び出せることがわかりました。

ただ、この場合、1回のリクエストで9倍くらいの負荷がかかりますか?
それとも、データベースソフトの内部では最適化されており、実際の負荷は無視できる程度ですか?
データベースソフトは使ったことがないのですが、一般論として負荷がどの程度増えるものか教えていただければ幸いです。

A 回答 (3件)

検索データが返される順序も留意してください。

ORDER BYでソート指定しないと、順序は保証されません。
    • good
    • 0

特定の列の中で、位置や長さが不定の検索(LIKE条件)するのではなくて、「=」条件で検索できる要件なのですね?


母体がどの位あり、その中で何件くらい検索するのか不明ですが、インデックスを定義して、インデックスを有効利用できる検索にしなければ、母体データを全件検索することになります。
リクエスト回数については、IN条件またはOR条件で1/9回にできるなら、そうしてください。
なお、実際の検索条件は他の条件もありもっと複雑になるなら、ORよりIN条件を使ったほうが、MySQLがより適切なインデックスを使ってくれる可能性があります。
    • good
    • 1

>>ただ、この場合、1回のリクエストで9倍くらいの負荷がかかりますか?



データベースを「検索担当の人」とイメージしてみたら、いいかもしれません。
9回のリクエストは、検索担当者に9回の仕事依頼をして、9回の返事をもらうことになります。
でも、or条件で検索の数字を9個並べて伝えたら、仕事依頼は1回、返事も1回で済むので効率的ですよね?

また、実際の検索作業も、データが書かれたところ(HDD等)から取り出す時間と比較すれば、取り出したデータが該当するか?としらべる時間はずっと短い。
なので、1回で取り出したデータを9個の条件でチェックするほうがずっと効率的となります。

たぶん、orで条件を作った場合、9倍の時間はかからず、or無しのときとほぼ同じくらいではないか?なんて思えます。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
Waitを設けようかと思っていましたが、特になしでも相手サーバへの負荷は変わらなさそうですね。今までよりも9倍早くデータが更新できるのは凄くお得ですね。
というか、もっと早くこういった方法に気づけばよかったです。
とても参考になりました。

お礼日時:2022/04/11 05:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!