Сортировка SQL при вставке возможна? - PullRequest
3 голосов
/ 06 октября 2011

В SQL при вставке в предварительно отсортированную таблицу возможно ли вставить строку при сортировке строки вместе со всей таблицей? Такие как

create table positional_order (
  num number,
  txt varchar2(10)
);

существующая таблица

row 1   (3, 'three' );
row 2   (4, 'four' );

вставить новую строку

row 3   (1, 'one');

после вставки

таблица становится

row 1   (1, 'one');
row 2   (3, 'three' );
row 3   (4, 'four' );

Возможно ли это?

Или мне нужно вставить строку в таблицу, а затем выбрать порядок по?

Кстати, я использую sqlite.

Спасибо

Ответы [ 4 ]

7 голосов
/ 06 октября 2011

Насколько я знаю, вставка строки в определенное место не является частью какой-либо стандартной базы данных SQL.Часть работы базы данных состоит в том, чтобы определить, как логически хранить строки.Как вы сказали, время для упорядочения строк - это когда вы делаете SELECT, используя ORDER BY.

Если вы беспокоитесь о производительности, создайте индекс для столбца «число».Подробнее об индексах здесь

5 голосов
/ 06 октября 2011

Краткий ответ: таблицы являются наборами и не имеют порядка.

Длинный ответ: кластеризованный индекс настолько близок, насколько это возможно, и даже это не так уж и близко - без порядка, механизм запросов может свободно возвращать результаты в любом порядке.он думает лучше.Кластерный индекс будет означать, что запрос только к этой таблице будет ПОЛНОСТЬЮ возвращать строки в порядке, определенном для индекса, но не рассчитывать на него.Тем не менее, все индексы определяют порядок A, а кластеризованный индекс определяет порядок записей на диске, в то время как это не гарантирует ваших результатов в каком-либо конкретном порядке, это делает его вероятным в большинстве случаев.Но я бы тщательно подумал, прежде чем использовать кластерный индекс для чего-либо, кроме автоматически генерируемого / увеличиваемого столбца.Если вы вставляете в таблицу с кластеризованным индексом, записи на диске, возможно, придется перемещать, и это дорогая операция.

1 голос
/ 06 октября 2011

Это невозможно, нет. Данные в таблице SQL по умолчанию не сортируются. Вам нужно будет использовать выражение ORDER BY в своем приложении, чтобы получить результаты в нужном вам порядке.

0 голосов
/ 06 октября 2011

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

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