タグ

SQLとバグに関するiwwのブックマーク (2)

  • MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?

    な、なんと person_diaryはインデックスが適用されずにフルスキャンされ(1行目のkeyがNULL) 逆にpersonはid列に設定してあるプライマリキーが適用される(2行目のkeyがPRIMARY) という二つの謎な現象が発生しました。 そもそもpersonはnameカラムに対してLIKE検索しているのに、id列のプライマリキーが効いちゃうのは全く納得いきません。なぜ、どうしてこんなことが起こるのでしょう? 原因 私がMySQLに期待していた動きとしては ①サブクエリを実行してperson.idのリストをメモリ中に作成 ②person.person_idに張られているインデックスを使って検索 というところでした。 期待通りに動いてくれなかったのには二つのMySQLの特性が関係していました。 特性① サブクエリを含むSQLは外側から先に実行される MySQLの場合、サブクエリを含む

    MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?
    iww
    iww 2016/05/18
    『・IN句の中をサブクエリではなく事前にプログラムで取得しておいてカンマ区切りで渡す ・JOINしちゃう のどちらか』
  • 単位の歴史

    B.4. 単位の歴史標準SQLでは、「"日付時刻リテラル"定義の中で、"日付時刻の値"はグレゴリオ暦に従った日付と時間の自然法則に則る」と明記されています。 PostgreSQLは標準SQLの指針に従い、グレゴリオ暦が使われる以前の年に対してもグレゴリオ暦で日付を数えます。 この規則は先発グレゴリオ暦として知られています。 ユリウス暦は、紀元前45年にユリウス・カエサル(Julius Caesar)によって広められたものです。 西欧でグレゴリオ暦への移行が開始された1582年まで一般的に使用されていました。 ユリウス暦では、太陽年は365日+1/4日=365.25日と概算されます。 この暦では、128年で約1日のずれが生じます。 ローマ教皇グレゴリウス13世(Gregory XIII)はトレントの公会議(Council of Trent)の勧告に従って累積していた暦のずれを修正しました。

    iww
    iww 2013/04/17
  • 1