Copilotで”oracleでインデックスの再構築が必要な判定をするSQL”を入力したらそれっぽいSQLが出てきた SELECT i.owner, i.index_name, i.table_name, i.status, i.blevel, i.leaf_blocks, i.distinct_keys, i.clustering_factor, i.last_analyzed FROM dba_indexes i WHERE i.status = 'VALID' AND i.leaf_blocks > 0 AND ( (i.leaf_blocks / NULLIF (i.distinct_keys, 0 )) > 4 -- 目安値: 4 以上 OR i.blevel > 3 -- 目安値: 3 より大きい ) ORDER BY i.owner, i.index_name; インデックスが断片化するとパフォーマンスが落ちるのでインデックスの再構築が必須 昔は雑誌の付録とかドキュメントを見て書いたりしないとならなかったけど、今はAIが指針を示してくれる プログラマーをやっているころに引用のSQLみたいのを流してインデックスの検索数が多かったけど、放置していたら別の人がインデックスの再構築をやって、2日後ぐらいに同じSQLを流したら1インデクスも引っかからなかった プログラムはバインド変数を使うのでプログラム以外のSQLは履歴で目立つのかな バインド変数を使えばSQLの構文解釈とかもキャッシュで処理されるのでコンピュータ資源の節約になる あと、私はデータベースサーバーとwebサーバーのosのroot権限を持っていなかったのでソフトウェアのアップデートは出来なかった oracleは開発者権限を持っていたので全SQLを実行できた sqlを書くのはプログラマーの仕事だと思うけどインデックスの再構築はプログラマーの仕事か? インデックスの再構築もSQLでやるんだけど