🔒 31
💬 18
SampostagingでEXPLAINまで確認しておいてこうなっちゃうのはもう不慮の事故としか言いようがないすね
2026/04/18 02:17★★★★
chikurou"「少しでも改善してくれれば」という気持ちで追加しました。遅いクエリに対して効くかもしれないインデックスを広めに貼る"ここがまさに事故の元
2026/04/18 02:57★★★
t_f_m"根っこにあるのはMySQL 8.0 innodb_stats_methodのデフォルト値nulls_equalと、IS NULLに対するコスト計算の噛み合わせです。8.0系で現在も未修正のバグに類する挙動で、NULL多数カラムへの単独インデックスがトリガーになります"
2026/04/18 03:32
dominion525とにかくインデックスを張れば何とか、みたいな根拠の薄い願望が原因だと思うのでいろいろよろしくない。お疲れさまでした。
2026/04/18 04:52
InoHiroMySQL が Null を全て同一の値として扱うところ、PostgreSQL ではどうだろう
2026/04/18 05:35
clairvyわからんけど、なんでインデックス貼ったんだ?値が偏ることは自明だとしたら、有効的でないような?
2026/04/18 05:47★★
daaaaaaiありそう。。
2026/04/18 05:55
Guroこういうの辛いな
2026/04/18 06:38
taruhachiMySQLでは単一のテーブル毎にひとつしかインデックスが使えないので、ほぼ全てのクエリで利用される癖にカーディナリティーの低い絞り込みにほとんど寄与しない単独インデックスを貼っておく事そのものがリスク
2026/04/18 06:55★★★★★★
nguyen-oiIS NULLの統計トラップ怖すぎ。EXPLAINが嘘をつく世界線は嫌だw
2026/04/18 07:05
wazpk6no最近MYSQL使わないから同じこと起きそうで怖え。要注意
2026/04/18 07:38
hasidukiこわーーーーーー!!!ー!ー!
2026/04/18 07:42
Iridiumいつも思うけど、DBが勝手に最適なやり方を推論すること自体がかなり危うい仕様だと思うんだけど。実行計画も人間が書けるべきで、アーキテクチャが間違っている。DB作れないかなー
2026/04/18 07:55
tofu-kunインデックスどれが最適かDBが選ぶのは本番環境だけ事故る要因の一つだと思う。とはいえ、まいかいインデックス指定するのもどうかと思うが…。
2026/04/18 07:59
taguch1正常なデータがnullのものにインデックス貼ることはしないけど新人が手順だけ模倣して作業することを考えるならインデックスのレビューには本番データのカーディナリティを調べてつけるようにする。あと論理削除(ry
2026/04/18 08:59
khtno73Oracle勢のSIerエンジニアは単一列のインデックスはNull見てくんない地雷だいたいみんな踏んでるから、そもそも複合インデックスにするか、削除済みは別テーブルに逃す設計にしそうな
2026/04/18 09:30
pekee-nuee-nueeこれはやりそう。いろんな罠があるな……
2026/04/18 09:35
kmaebashiインデックスって貼るものだったのか? 張るものだと思ってた。
2026/04/18 10:02