2015-08-26 2 views
2

У меня есть таблица (без ПК), которая является inserted into обычным событием. В настоящее время неупорядоченные, и я хотел бы заказать в модеMySql - Переупорядочение строк таблицы

select * from t1 order by col1 ASC,col2 DESC 

Ограничения заключаются в следующем:

  • По соображениям производительности я не могу создать новую временную таблицу для хранения упорядоченные данные в

  • Для чистоты пользовательского интерфейса, я должен предположить, что все заявления выберите будет без приказа по п

  • Из-за вставки в механизм я не могу заказать стол в то время как она наращивается

Есть ли какой-нибудь способ сделать это, что я не знаю, о/забыли?

+1

тогда зачем вам это нужно? – Madhivanan

+2

Я думаю, что вам не нужно заказывать таблицу, но вместо этого добавьте индекс в таблицу вместо –

+0

, потому что мне нужен оператор 'select * from t1', чтобы вернуть упорядоченную таблицу пользователю (который не должен знать, что сортировать на [или как это сделать]) –

ответ

4

Есть ли способ сделать это, о котором я не знаю/не заметил?

Номер и номер here is a very good explanation. Цитирование наиболее употребительной части:

В мире SQL заказ не является неотъемлемым свойством набора данных. Таким образом, вы не получаете никаких гарантий от вашей РСУБД, что ваши данные вернутся в определенном порядке - или даже в последовательном порядке - если вы не запросите свои данные с предложением ORDER BY.

При этом, если вы снижаете требования к производительности, вы можете создать упорядоченное представление и выбрать его. Например (не уверены в синтаксисе):

CREATE VIEW foobar AS 
select * from t1 order by col1 ASC,col2 DESC; 

Но это будет медленно (ish).