Добрый день, господа. Возник такой вопрос.
есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T.
В таблицу не вносится никаких изменений извне (апдейты, инсерты...).
Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
Интересует ваше мнение по поводу oracle и sql server 2005
Здравствуйте, kirill_dot_net, Вы писали:
__>Добрый день, господа. Возник такой вопрос. __>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>Интересует ваше мнение по поводу oracle и sql server 2005
__>Спасибо.
Вряд ли. Заведи лучше поле, которое и будет содержать порядковый номер, а в запросе сделаешь ORDER BY
Здравствуйте, kirill_dot_net, Вы писали:
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
Нет, нельзя. Ни какая СУБД такой гарантии не даст, если не указан явный ORDER BY.
Здравствуйте, kirill_dot_net, Вы писали:
__>Добрый день, господа. Возник такой вопрос. __>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>Интересует ваше мнение по поводу oracle и sql server 2005
__>Спасибо.
в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует
Здравствуйте, Albatross, Вы писали:
A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует
Нет.
Здравствуйте, Albatross, Вы писали:
A>Здравствуйте, kirill_dot_net, Вы писали:
__>>Добрый день, господа. Возник такой вопрос. __>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>>Интересует ваше мнение по поводу oracle и sql server 2005
__>>Спасибо.
A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует
Здравствуйте, Albatross, Вы писали:
A>Здравствуйте, kirill_dot_net, Вы писали:
__>>Добрый день, господа. Возник такой вопрос. __>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>>Интересует ваше мнение по поводу oracle и sql server 2005
__>>Спасибо.
A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует
в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов
Здравствуйте, DuШes, Вы писали:
DШ>Здравствуйте, Albatross, Вы писали:
A>>Здравствуйте, kirill_dot_net, Вы писали:
__>>>Добрый день, господа. Возник такой вопрос. __>>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>>>Интересует ваше мнение по поводу oracle и sql server 2005
__>>>Спасибо.
A>>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует
DШ>в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов
то есть, на мой вопрос можно ответить "Да, при условии использования индексов" ??
[...] DШ>>в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов
__>то есть, на мой вопрос можно ответить "Да, при условии использования индексов" ??
да, и используя order by <fields> — для mssql в том случае если индекс у тебя будет иметь <fields>, ты в плане увидишь только index scan, или seek, если будешь использовать where...
если же по <fields> из order by не будет создан индекс, то получишь sort — что есть зло...имхо...
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, DuШes, Вы писали:
DШ>>в любом случае опираться на порядок записей никогда не стоит, правило хорошего тона — использование индексов
L>Надеюсь вы имели в виду ORDER BY.
именно..
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, Albatross, Вы писали:
A>>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует IB>Нет.
мне так кажется что доля истины все-таки есть /// применительно только того случая когда есть кластерный индекс
Здравствуйте, DuШes, Вы писали:
DШ>мне так кажется что доля истины все-таки есть /// применительно только того случая когда есть кластерный индекс
Не а...
Во-первых, кластерный индекс не гарантирует физического порядка, а во-вторых, подумай, как будет происходить выборка если у тебя хотя бы два просессора...
Здравствуйте, kirill_dot_net, Вы писали:
__>Добрый день, господа. Возник такой вопрос. __>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>Интересует ваше мнение по поводу oracle и sql server 2005
Рассуждая абстрактно , если вообще ничего не меняется, то порядок записей не должен меняться. В оракле, во всяком случае.
Но! Ни в коем случае нельзя рассчитывать на это в реальной системе.
А самое главное — непонятен смысл. Это какой-то чисто теоретический вопрос?
Если нет, то добавление банального order by по любому из полей даст искомую гарантию неизменного порядка.
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, DuШes, Вы писали:
DШ>>мне так кажется что доля истины все-таки есть /// применительно только того случая когда есть кластерный индекс IB>Не а... IB>Во-первых, кластерный индекс не гарантирует физического порядка, а во-вторых, подумай, как будет происходить выборка если у тебя хотя бы два просессора...
согласен...parallelism не учел...
что касается физического порядка — об этом не говорил, имел в виду clastered index scan — возвращает упорядоченный набор записей...но конечно тоже не гарантировано, не используя order by
Здравствуйте, kirill_dot_net, Вы писали:
__>Добрый день, господа. Возник такой вопрос. __>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>Интересует ваше мнение по поводу oracle и sql server 2005
__>Спасибо.
При запросе select * from T данные будут возвращаться в порядке их обнаруживания, а не в порядке их вставки. Когда создаешь таблицы в Oracle оператором CREATE TABLE по умолчанию таблицы создаются в виде кучи, т.е. данные размещаются не в порядке их вставки, а там, где для них найдется место(конечно все ето место ограничено...) Так что гарантии НЕТ!!!
Здравствуйте, kirill_dot_net, Вы писали: __>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
Нет, нельзя.
Повторять мантру "порядок записей в результате select определяется только order by" до просветления. __>Интересует ваше мнение по поводу oracle и sql server 2005
Уточню, что мантра от сервера не зависит.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Albatross, Вы писали:
A>Здравствуйте, kirill_dot_net, Вы писали:
__>>Добрый день, господа. Возник такой вопрос. __>>есть таблица T — скажем так, любая таблица. Есть запрос к таблице select * from T. __>>В таблицу не вносится никаких изменений извне (апдейты, инсерты...). __>>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем?
__>>Интересует ваше мнение по поводу oracle и sql server 2005
__>>Спасибо.
A>в MS SQL Server записи в таком случае всегда возвращаются, упорядоченные по кластерному индексу, если он существует
Один из самых распространненых мифов. На отдельно взятой странице кластерного индекса записи не упорядочиваются. Читать статью
TMU>Рассуждая абстрактно , если вообще ничего не меняется, то порядок записей не должен меняться. В оракле, во всяком случае.
Что будет, если админ сделает ALTER TABLE .. MOVE ?
__>Можно ли гарантировать, что порядок записей, который вернет запрос select * from Т не будет меняться со временем? __>Интересует ваше мнение по поводу oracle и sql server 2005