Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как SQL Server производит выборку данных?
|
|||
|---|---|---|---|
|
#18+
Как SQL Server производит выборку данных? Если в таблице нет первичного ключа и вообще ничего, что бы идентифицировало каждую строку данных, к примеру, таблица содержит одно поле (динамику изменения цены акции за день, новое значение цены заносится каждую минуту), то в каком порядке будет возвращать строки данных SQL Server – в последовательности в которой их заносили или в какой-то произвольной? И необходимо ли присутствие ключа в таблице в этом случае? Я точно знаю, что Access, при выборке, перемешивает данные, а вот мешает ли их SQL??? Заранее благодарен, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2002, 21:58 |
|
||
|
Как SQL Server производит выборку данных?
|
|||
|---|---|---|---|
|
#18+
Возвращать данные будет в общем случае в произвольном порядке. Для выборки в нужнои порядке используйте конструкцию Order by. Причем учтите, что даже если первичный ключ имеется, все равно без использования Order by не будет у Вас упорядоченности в полученном рекордсете. Данные физически хранятся в соответствии с кластерным индексом. По умолчанию при создании первичного ключа на него накладывается кластерный индекс, поэтому по умолчанию данные физически хранятся в порядке задаваемым первичным ключом, но при желании кластерный индекс может отсутствовать вообще или быть наложен на любое другое поле. Обратите внимание, я говорю именно хранятся, но это еще не означает что они будут выдаваться Вам в том же порядке, поэтому не стоит на это расчитывать. Так например, если имеется таблица create table m(a int primary key, b int, c int) create index cc on m(b) И данные insert into m values (1,56,2) insert into m values (2,10,777) insert into m values (3,100,230) insert into m values (4,1001,23) insert into m values (5,1,23) то от select * from m еще стоит ожидать упорядоченность по a , а от select * from m where b>0 или select b from m - уже не стоит Можно привести и другие примеры. Все зависит от пути доступа к данным. Одним словом, чтобы не болела голова, ВСЕГДА для упорядоченного набора используйте Order by, ибо иначе никакой упорядоченности не гарантируется. Насчет необходимости наличия ключа как такого - это смотря что под этим понимать. Без него работать будет. Но очень не рекомендуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2002, 23:36 |
|
||
|
Как SQL Server производит выборку данных?
|
|||
|---|---|---|---|
|
#18+
Небольшое дополнение. В общем случае, для упорядочения и идентификации, обычно используют дополнительное поле целого типа (например int) со свойством identity. Если у Вас, Александр, добавление происходит гарантированно по одной записи и с интервалом в минуту, то для решения проблемы сортировки (и идентификации) можно использовать поле типа дата-время (datetime) с указанием значения по умолчанию функции getdate(). Кстати, это поле может пригодиться и для других применений: построения диаграмм, вычисления статистики и др. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2002, 06:07 |
|
||
|
Как SQL Server производит выборку данных?
|
|||
|---|---|---|---|
|
#18+
Есть еще специальный тип данных timestamp, позволяющий уникально в пределах базы идентифицировать любое изменение в колонке, будь то insert or update. Сам, правда, не пользовался, но думаю, что вещь может быть полезная. Впрочем, на скорости выборки вряд ли отразится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 08:47 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1824066]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
61ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
4ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 357ms |

| 0 / 0 |
