SQL

ここ何ヶ月かSQLをずっと書いてた。データベース。
ソースコード生成したくなる言語だなあという感想。
変数がないから全部ベタに書かないといけない。いい方法知らないだけかもしれないけど。
SQLiteしか触ってないけど、他のふつうなDBMSは違うのかな。
SQLite特有なのかわからないけどハマったところは、

  • サブクエリ使うとrowidが入ってこない
  • 1行だけのテーブルとカラムの多いテーブルをjoinするときに、ものすごく遅いことがあった
    • 1行だけの方の全カラムにインデックス張ったら一瞬で済んだ。未だに謎。
  • explainがVMの命令列で出てくるので何がなにやらさっぱり。チューニングは勘と試行錯誤で。
  • インデックス張っても、効果があるのかないのか微妙。
  • 集約関数を入れ子にするととても遅い。

とかかな。
あと、トランザクションとか非同期とかロックとかその辺は全くやってないので全然わからない。面白そうだと思うんだけど、いい機会があればなぁ。なかなか趣味でデータベースってやりにくいし。
独りよがりになってしまってるのも何とかしたいが、周りに先達がいなくてなんとも。