タグ

2014年9月19日のブックマーク (2件)

  • 行値式の IN でインデックスが使われない - Qiita

    mysql 5.5.36、下記のような行値式を使ったクエリでインデックスが使われませんでした。 便利な構文ですが、使用するときは注意した方がいいかもしれません。 ※ 2015/11/27 追記 mysql 5.7.9 で試したところ、インデックスが使われるようになっていました。 explain select * from tbl where (id, seq) in ((1, 100), (2, 200), (3, 300)); +----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_

    行値式の IN でインデックスが使われない - Qiita
  • GROUP BY を使用せずに HAVING を使う - Qiita

    例えば下記のように複雑な条件に基づいてレコードを抽出する場合、WHERE を使うと残念なことになります。 SELECT T.id, ( CASE WHEN /*難解極まりない条件1*/ false THEN 1 WHEN /*難解極まりない条件2*/ false THEN 2 WHEN /*難解極まりない条件3*/ false THEN 3 ELSE 0 END ) AS stat FROM tbl T WHERE ( CASE WHEN /*難解極まりない条件1*/ false THEN 1 WHEN /*難解極まりない条件2*/ false THEN 2 WHEN /*難解極まりない条件3*/ false THEN 3 ELSE 0 END ) = 2 とても保守性が低いと思います。 WHERE を無くして stat を使用してアプリケーションレイヤーで絞り込むことも出来ますが、そうす

    GROUP BY を使用せずに HAVING を使う - Qiita