如何在调用SQL :: Translator :: Table的add_index函数时指定索引值顺序?

时间:2011-01-07 00:21:09

标签: sql perl dbix-class

我正在使用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

1 个答案:

答案 0 :(得分:1)

不,目前SQL::Translator::Producer::MySQL(我认为甚至是DBIx :: Class本身)也没有提供这样做的方法。

但是,根据MySQL manual,这些索引排序规则目前已被忽略:

  

index_col_name规范可以   以ASC或DESC结束。这些关键字   允许将来的扩展   用于指定升序或降序   索引值存储。目前,他们   被解析但被忽略;指数值   总是以升序存储。