0

DBIx::Class を使用してテーブルとそのインデックスを作成し、SQL::Translator::Table add_index()を呼び出していますが、次のように、いくつかの列で値の順序を指定できるようにしたいと考えています。

CREATE INDEX myindex ON mytable (
    username ASC,
    created  DESC
);

add_table() に 'ASC' および 'DESC' 修飾子を指定することは可能ですか?

そうでない場合、この SQL は非効率的であると思われます。

SELECT text FROM mytable WHERE username = ? ORDER BY created DESC LIMIT 20;

この場合、データベースのオーバーヘッドを削減するための回避策はありますか? (MySql 5.xを使用しています

4

1 に答える 1

1

いいえ、現在SQL::Translator::Producer::MySQL (そして DBIx::Class 自体でさえ) はこれを行う方法を提供していません。

ただし、MySQL のマニュアルによると、これらのインデックス照合は現在無視されています。

index_col_name の指定は、ASC または DESC で終了できます。これらのキーワードは、昇順または降順のインデックス値ストレージを指定するための将来の拡張で許可されます。現在、それらは解析されますが無視されます。インデックス値は常に昇順で格納されます。

于 2011-03-01T10:44:39.807 に答える