Как указать порядок значений индекса при вызове функции SQL::Translator::Table add_index?

Я использую DBIx::Class для создания таблиц и их индексов и поэтому вызываю SQL::Translator::Table add_index(), но я хотел бы указать порядок значений в некоторых столбцах, например:

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

Можно ли использовать модификаторы «ASC» и «DESC» для add_table()?

Если нет, я подозреваю, что этот SQL будет неэффективным:

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

Любое предлагаемое обходное решение для уменьшения накладных расходов на базу данных в этом случае? (Я использую MySql 5.x


person andymurd    schedule 07.01.2011    source источник


Ответы (1)


Нет, в настоящее время SQL::Translator::Producer::MySQL (и, я думаю, даже сам DBIx::Class) не предоставляют способа сделать это.

Однако, согласно руководству по MySQL, эти сопоставления индексов в настоящее время игнорируются:

Спецификация index_col_name может заканчиваться на ASC или DESC. Эти ключевые слова разрешены для будущих расширений для определения хранения значений индекса по возрастанию или по убыванию. В настоящее время они анализируются, но игнорируются; значения индекса всегда хранятся в порядке возрастания.

person cubabit    schedule 01.03.2011