Как быстро пересортировать таблицу MySQL по одному из столбцов? - PullRequest
1 голос
/ 29 марта 2010

Каковы наиболее эффективные запросы SQL, которые бы использовали существующую таблицу MySQL и пересортировали ее по одному из столбцов? Не выборка, а вся таблица должна быть отсортирована по одному столбцу. Думаю, как-то использовать временную таблицу, но как лучше?

Ответы [ 6 ]

6 голосов
/ 29 марта 2010

Даже если вам действительно не нужно это делать, вы можете использовать ALTER TABLE ... ORDER BY ..., чтобы изменить порядок таблицы. Но подумайте дважды, прежде чем делать это. Тогда подумайте еще несколько раз. Тогда не делай этого.

4 голосов
/ 29 марта 2010

Таблицы не отсортированы *. Не думайте, что они содержат данные в любом порядке по умолчанию. Это то, для чего используется ORDER BY в ваших запросах, даже если нет специального фильтра предложений WHERE.

3 голосов
/ 29 марта 2010

Лучший способ - держать руки подальше от структуры таблиц и изучать основы базы данных.

Создайте index для этого столбца.

2 голосов
/ 29 марта 2010

Мой 0,02с; возможно, он просто хочет изменить порядок своего стола в более удобочитаемом виде. Представьте себе стол вроде:

 TABLE FOO with ID Char(3) Primary Key,DESCRIPTION Varchar

с 4 рядами

ID  | DESCRIPTION
001 | Test1
004 | Test4
003 | Test3
002 | Test2

Возможно, строки 003 и 002 были вставлены позже (неизвестно, когда создавалась таблица), поэтому OP хотел бы изменить порядок записей в более читабельном виде (я знаю, что он мог бы выбрать с помощью предложения заказа).

В этом случае я бы сделал резервную копию таблицы (SELECT * INTO backup_FOO FROM FOO), удалил все ограничения, обрезал их и перезагрузил их в порядке предпочтительного столбца OP.

2 голосов
/ 29 марта 2010

таблица - это просто данные, которые не отсортированы. запрос, получающий данные из этой таблицы, может быть отсортирован, но сама таблица - нет.

Наличие индексов в столбцах, по которым вы хотите сортировать запросы, поможет обеспечить лучшее время запроса.

1 голос
/ 29 марта 2010

Самое простое - добавить ключ к этому столбцу.

Таблица ALTER TABLE ADD KEY (column);

Затем вы можете использовать EXPLAIN SELECT, чтобы показать, что вы используете ключ для запроса.

Если в таблице постоянно добавляются и удаляются строки, вы также можете запустить таблицу OPTIMIZE TABLE для хорошей меры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...