lynx   »   [go: up one dir, main page]

記事へのコメント45

  • 注目コメント
  • 新着コメント
オーナーコメントを固定しています
shallow1729
オーナー shallow1729 書きました!シンプルなクエリでも想定外にフルスキャンを起こす事がある話です

2021/12/19 リンク

その他
do_su_0805
助かった

その他
kobito19
で、原因分かってそのクエリのパフォーマンスは改善したん?(そもそもそのフルスキャンはパフォーマンス問題を引き起こしてたん? 何の目的で調査してたのか読んでもわからん)

その他
k_wizard
INの中にそんなに入れるの…

その他
otcsr
m

その他
moccos_info
クソ長IN句を「シンプルなもの」と言い張るの正気か

その他
noblejasper
IN句に数万。まれによくあるよね

その他
zu2
“MySQLのパラメーター次第ですが、デフォルトの設定だとこのIN句の中の値の数が数万になると適切なインデックスが用意されていてもフルスキャンが発生する事がありました”

その他
shimarisugi
この辺の話が分かるようにsql触っておいて良かった。IN句の中身をサブクエリ(or with)で取得したIDのリストなんかにするとヤバそうね

その他
wkwkhautbois
IN句の中に何千もパラメータが入っていたら正気か疑うけど、MySQLだとやる方法なのか…。あるいはORマッパーが生成か。

その他
khtno73
まずin 使うならexistsのがたいていのRDBMSだと速いし、この件数ならダミーテーブルにそのid突っ込んで元テーブルとinner joinする方が普通は速そう。

その他
ghostbass
IN句の中の値の数が数万<ちょっと考えにくいけどどういうユースケースなんだろ

その他
rryu
件数を絞らずにN+1の+1を取得するクエリーがこうなりがちではあるが、そもそもそういうことをするのが良くない感じはする。

その他
ene0kcal
ここ数年SQL全く触ってないけど、こういった時のIN句よりベターなプラクティスがあった気がするんだけど何だったけな??

その他
s_rsak
INの中に数万個入れるとか、初心者でも何かマズイことが起こりそうだと分かりそうなものだが。

その他
rx7
なるほど。ロジックと実際に検証された結果がまとまっていて勉強になった。

その他
bopperjp
DBA って職種があるだけに、DBはどこまでも沼。

その他
abryhryk
高木ひとみ○を思い出した

その他
rokujyouhitoma
IN句に2^23/2も突っ込むことはないかな。その規模のデータ量扱う時にはシャーディングして、もっと散らしてしまっている。

その他
krrrr
静的解析で分割してないとCIでエラーにするみたいなlint入れたりして対応してるんだけど、他の皆どうしてんの

その他
kagehiens
想定外というのも違和感があるが、何億レコードあるテーブルでも一律の個数上限でモード変えられると困ると言うのは分かる。でもこれだけの数inで書くのも可能なら避けたい。

その他
oktnzm
oktnzm IN句内なら多くてもせいぜい数百だろうに・・・数万とか一時テーブル使った方がいい。ドキュメントなめるよりRDBの基本構造学んだ方が有益だろう。

2021/12/19 リンク

その他
queeuq
勉強になる。

その他
s025236
s025236 auroraとmysqlの実行計画が同じ前提で話が始まってるんだけど…一昔前は全然違ったんだけど今は一緒なの?

2021/12/19 リンク

その他
daishi_n
昔のMySQLはサブクエリが遅くて鬼門だったんだけどね。

その他
regularexception
長大なin句より、tmpテーブル作ってで処理した方がいいかなぁって最近思う

その他
shikiarai
下手なIN句を見つけると手を加える前に前任者はクソと周りに丁寧に説明してから直すようにしてる。

その他
ms2sato
単に私が経験不足なのかもしれないが、サブクエリとか使うものに感じた。大量のIDだけ配列で持ってるならそれも検索の結果に感じるので。何か前提が違うとかなのだろう。

その他
strawberryhunter
↓Oracleの制限で昔話を思い出したんだけど、このフルスキャンの話もIN (SELECT ...)にしたら解決する話ちゃうん。ちょっとググったら↓DEPENDENT SUBQUERYは改善されてるらしいし、検証してもらいたいわ。

その他
highqwerty8
後で確認

その他
findup
ある条件に一致するレコードのIDを先にSELECTしておいて、そのIDをn件単位でSELECTしたい時とかだとIN区に詰め込むことがあるかなあ。

その他

注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

アプリのスクリーンショット
いまの話題をアプリでチェック!
  • バナー広告なし
  • ミュート機能あり
  • ダークモード搭載
アプリをダウンロード

関連記事

MySQLでIN句の中に大量の値の入ったクエリがフルスキャンを起こす話 - freee Developers Hub

こんにちは、freee Developers Advent Calendar 2021、19日目のid:shallow1729です。昨日はtdtdsさんで...

ブックマークしたユーザー

すべてのユーザーの
詳細を表示します

同じサイトの新着

同じサイトの新着をもっと読む

いま人気の記事

いま人気の記事をもっと読む

いま人気の記事 - テクノロジー

いま人気の記事 - テクノロジーをもっと読む

新着記事 - テクノロジー

新着記事 - テクノロジーをもっと読む

同時期にブックマークされた記事

いま人気の記事 - 企業メディア

企業メディアをもっと読む

Лучший частный хостинг