вопрос по СУБД
От: kirill_dot_net Россия  
Дата: 25.01.07 11:55
Оценка:
Добрый день, господа. Возник такой вопрос.
есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

Интересует ваше мнение по поводу oracle и sql server 2005

Спасибо.


25.01.07 16:24: Перенесено из '.NET'
Re: вопрос по СУБД
От: .Den Украина  
Дата: 25.01.07 12:01
Оценка: +1
Здравствуйте, kirill_dot_net, Вы писали:

__>Добрый день, господа. Возник такой вопрос.

__>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>Интересует ваше мнение по поводу oracle и sql server 2005


__>Спасибо.


Вряд ли. Заведи лучше поле, которое и будет содержать порядковый номер, а в запросе сделаешь ORDER BY
Re: вопрос по СУБД
От: IB Австрия http://rsdn.ru
Дата: 25.01.07 13:24
Оценка:
Здравствуйте, kirill_dot_net, Вы писали:

__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

Нет, нельзя. Ни какая СУБД такой гарантии не даст, если не указан явный ORDER BY.
Мы уже победили, просто это еще не так заметно...
Re: вопрос по СУБД
От: Albatross  
Дата: 25.01.07 13:52
Оценка: -1
Здравствуйте, kirill_dot_net, Вы писали:

__>Добрый день, господа. Возник такой вопрос.

__>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>Интересует ваше мнение по поводу oracle и sql server 2005


__>Спасибо.



в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует
Re[2]: вопрос по СУБД
От: IB Австрия http://rsdn.ru
Дата: 25.01.07 14:03
Оценка:
Здравствуйте, Albatross, Вы писали:

A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует

Нет.
Мы уже победили, просто это еще не так заметно...
Re[2]: вопрос по СУБД
От: kirill_dot_net Россия  
Дата: 25.01.07 14:04
Оценка:
Здравствуйте, Albatross, Вы писали:

A>Здравствуйте, kirill_dot_net, Вы писали:


__>>Добрый день, господа. Возник такой вопрос.

__>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>>Интересует ваше мнение по поводу oracle и sql server 2005


__>>Спасибо.



A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует


А если не существует?
Re[2]: вопрос по СУБД
От: DuШes  
Дата: 25.01.07 14:09
Оценка:
Здравствуйте, Albatross, Вы писали:

A>Здравствуйте, kirill_dot_net, Вы писали:


__>>Добрый день, господа. Возник такой вопрос.

__>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>>Интересует ваше мнение по поводу oracle и sql server 2005


__>>Спасибо.



A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует


в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов
Re[3]: вопрос по СУБД
От: kirill_dot_net Россия  
Дата: 25.01.07 14:13
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>Здравствуйте, Albatross, Вы писали:


A>>Здравствуйте, kirill_dot_net, Вы писали:


__>>>Добрый день, господа. Возник такой вопрос.

__>>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>>>Интересует ваше мнение по поводу oracle и sql server 2005


__>>>Спасибо.



A>>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует


DШ>в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов


то есть, на мой вопрос можно ответить "Да, при условии использования индексов" ??
Re[3]: вопрос по СУБД
От: Lloyd Россия  
Дата: 25.01.07 14:15
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов


Надеюсь вы имели в виду ORDER BY.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: вопрос по СУБД
От: DuШes  
Дата: 25.01.07 14:20
Оценка:
[...]
DШ>>в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов

__>то есть, на мой вопрос можно ответить "Да, при условии использования индексов" ??


да, и используя order by <fields> — для mssql в том случае если индекс у тебя будет иметь <fields>, ты в плане увидишь только index scan, или seek, если будешь использовать where...

если же по <fields> из order by не будет создан индекс, то получишь sort — что есть зло...имхо...
Re[4]: вопрос по СУБД
От: DuШes  
Дата: 25.01.07 14:21
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, DuШes, Вы писали:


DШ>>в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов


L>Надеюсь вы имели в виду ORDER BY.

именно..
Re[3]: вопрос по СУБД
От: DuШes  
Дата: 25.01.07 14:24
Оценка:
Здравствуйте, IB, Вы писали:

IB>Здравствуйте, Albatross, Вы писали:


A>>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует

IB>Нет.

мне так кажется что доля истины все-таки есть /// применительно только того случая когда есть кластерный индекс
Re[4]: вопрос по СУБД
От: IB Австрия http://rsdn.ru
Дата: 25.01.07 14:51
Оценка: 1 (1)
Здравствуйте, DuШes, Вы писали:

DШ>мне так кажется что доля истины все-таки есть /// применительно только того случая когда есть кластерный индекс

Не а...
Во-первых, кластерный индекс не гарантирует физического порядка, а во-вторых, подумай, как будет происходить выборка если у тебя хотя бы два просессора...
Мы уже победили, просто это еще не так заметно...
Re: вопрос по СУБД
От: TMU Россия  
Дата: 25.01.07 14:53
Оценка:
Здравствуйте, kirill_dot_net, Вы писали:

__>Добрый день, господа. Возник такой вопрос.

__>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>Интересует ваше мнение по поводу oracle и sql server 2005


Рассуждая абстрактно , если вообще ничего не меняется, то порядок записей не должен меняться. В оракле, во всяком случае.
Но! Ни в коем случае нельзя рассчитывать на это в реальной системе.
А самое главное — непонятен смысл. Это какой-то чисто теоретический вопрос?
Если нет, то добавление банального order by по любому из полей даст искомую гарантию неизменного порядка.
Re[5]: вопрос по СУБД
От: DuШes  
Дата: 25.01.07 14:56
Оценка:
Здравствуйте, IB, Вы писали:

IB>Здравствуйте, DuШes, Вы писали:


DШ>>мне так кажется что доля истины все-таки есть /// применительно только того случая когда есть кластерный индекс

IB>Не а...
IB>Во-первых, кластерный индекс не гарантирует физического порядка, а во-вторых, подумай, как будет происходить выборка если у тебя хотя бы два просессора...
согласен...parallelism не учел...
что касается физического порядка — об этом не говорил, имел в виду clastered index scan — возвращает упорядоченный набор записей...но конечно тоже не гарантировано, не используя order by
Re: вопрос по СУБД
От: zanimon  
Дата: 25.01.07 20:24
Оценка:
Здравствуйте, kirill_dot_net, Вы писали:

__>Добрый день, господа. Возник такой вопрос.

__>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>Интересует ваше мнение по поводу oracle и sql server 2005


__>Спасибо.


При запросе select * from T данные будут возвращаться в порядке их обнаруживания, а не в порядке их вставки. Когда создаешь таблицы в Oracle оператором CREATE TABLE по умолчанию таблицы создаются в виде кучи, т.е. данные размещаются не в порядке их вставки, а там, где для них найдется место(конечно все ето место ограничено...) Так что гарантии НЕТ!!!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: вопрос по СУБД
От: Sinclair Россия https://github.com/evilguest/
Дата: 25.01.07 20:42
Оценка:
Здравствуйте, kirill_dot_net, Вы писали:
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
Нет, нельзя.
Повторять мантру "порядок записей в результате select определяется только order by" до просветления.
__>Интересует ваше мнение по поводу oracle и sql server 2005
Уточню, что мантра от сервера не зависит.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: вопрос по СУБД
От: _d_m_  
Дата: 26.01.07 03:12
Оценка:
Здравствуйте, Albatross, Вы писали:

A>Здравствуйте, kirill_dot_net, Вы писали:


__>>Добрый день, господа. Возник такой вопрос.

__>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
__>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
__>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?

__>>Интересует ваше мнение по поводу oracle и sql server 2005


__>>Спасибо.



A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует


Один из самых распространненых мифов. На отдельно взятой странице кластерного индекса записи не упорядочиваются. Читать статью
Re[2]: вопрос по СУБД
От: dmur Россия  
Дата: 26.01.07 10:14
Оценка:
TMU>Рассуждая абстрактно , если вообще ничего не меняется, то порядок записей не должен меняться. В оракле, во всяком случае.
Что будет, если админ сделает ALTER TABLE .. MOVE ?
... << RSDN@Home 1.2.0 alpha rev. 668>>
Re: вопрос по СУБД
От: Igor Trofimov  
Дата: 28.01.07 20:39
Оценка:
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>Интересует ваше мнение по поводу oracle и sql server 2005

Нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.