• ベストアンサー

order by asc,desc混合index

order by で asc ,desc混合する場合indexが使用できないと思いますが、 たとえば、col1,col2,col3があったとして order by col1 asc, col2 desc, col3 asc ➡ order by col1 asc ,99999999 - col2 asc , col3 asc などのように、 col2を、カラムが取りうる最大値から引いてやることでascに置き換えても indexはかからないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

>mysql.5.1は無いみたいでした。 残念! ではこういうのは 99999999 - col2 asc はできませんから order by col1 asc, col2 desc, col3 asc ➡ order by col1 asc ,dummy1 asc , col3 asc として テーブル追加、変更時にdummy1には 99999999 - col2 を値として設定すればよいです。 逃げですけどね。これしかないかな。

その他の回答 (1)

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

Mysqlになければごめんなさい。 create index に 索引キーを構成する列を以下の形式で定義します。複数の列を指定する場合はカンマで区切って並べます。 列名 [ASCまたはDESC] [, 列名 [ASCまたはDESC] , ....] というのがあります。 小細工しないでも並べてくれますよ。

ikty
質問者

お礼

ありがとうございます。 mysql.5.1は無いみたいでした。 postgresql,db2,oracleはあるようですね。 ありがとうございました。