Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
DBAshnik Member Откуда: Сообщений: 410 |
наваял (будучи без опыта в MsSQL но с многолетним в Оракл) аналог привычной конструкции (в Оракле вместо physloc есть rowid)select from someHuuuuuugeTable where %%physloc%% = ( select top 1 %%physloc%% from someHuuuuuugeTable ); Тормозит на десятки минут! :-( Да, таблица хоть и на много миллионов! Но в Оракле сие было бы доли секунды! ( т.к. доступ по rowid - он же физический адрес строки - самое быстрое что может быть в принципе!) . Что я тут не знаю / не понимаю?? (отдельно select top 1 %%physloc%% from someHuuuuuugeTableидёт супер быстро! ) |
27 мар 19, 20:49 [21845452] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
Отвыкайте. |
||
27 мар 19, 20:52 [21845453] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1692 |
DBAshnik, могли бы план посмотреть, там все достаточно тривиально: будет скан всей таблицы + filter predicate для больших объемов данных в MS SQL быстрым является только индексный поиск. колонки %%lockres%%, %%physloc%% - виртуальные и индексными не в коей мере не являются. |
27 мар 19, 21:13 [21845467] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
|
||
27 мар 19, 21:51 [21845483] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8704 |
А чем сия чудесная конструкция отличается от просто select top 1 * from? |
||
27 мар 19, 22:05 [21845489] Ответить | Цитировать Сообщить модератору |
Deff Member Откуда: Пермь Сообщений: 18326 |
DBAshnik, %%physloc%% это не аналог rowid Оркала. Наиболее близкое будет колонка id bigint identity primary key clustered |
28 мар 19, 09:49 [21845754] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31779 |
Как уже сказали:
|
||||
28 мар 19, 11:25 [21845883] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
DBAshnik, по все очевидности, эта функция не предназначена для какого--либо другого использования, кроме того, в котором использована. Недокументированное и есть недокументированное и пенять на то, что это работает не так, как _Вы_ ожидаете, не следует. |
28 мар 19, 11:44 [21845914] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
|
||
29 мар 19, 01:52 [21846704] Ответить | Цитировать Сообщить модератору |
DBAshnik Member Откуда: Сообщений: 410 |
эээ, ну это был просто упрощённый пример! Оригинал планировался примерно таким: select ... from someHuuuuuugeTable where %%physloc%% = ( select max( %%physloc%% ) from someHuuuuuugeTableX where "...not created by me..." ); вообщем тут динамическое прохождение по ряду из X таблиц с разной структурой с желанием найти в каждой из них последнюю вставленную строку (причем вставленную не мной, но это уже детали). Но конструкция с max() тормозит ещё круче. Вижу теперь, что physloc аналогом оракловскому rowid не является. Всем спасибо! |
||||
29 мар 19, 11:40 [21846912] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
DBAshnik, @@identity, ident_current(). |
29 мар 19, 12:22 [21846959] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
Оракл что всегда вставляет в конец файла даже если в середине есть место? |
||
29 мар 19, 19:41 [21847555] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8704 |
|
||||
29 мар 19, 20:15 [21847571] Ответить | Цитировать Сообщить модератору |
DBAshnik Member Откуда: Сообщений: 410 |
ну не всегда, конечно, но в данном случае свободных мест нет. (т.к. есть только insert-ы, а ни update-ов ни delete-ов нетЪ! :-) ) |
||||
1 апр 19, 11:03 [21848738] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |