powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужное количество строк без использования таблицы
9 сообщений из 59, страница 3 из 3
Нужное количество строк без использования таблицы
    #40096105
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NIIIK
без внятного ответа и всё...
Ответы уже были даны ранее. Надо было читать все, а не выборочно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
use tempdb;
set ansi_nulls, quoted_identifier, xact_abort on;
go

drop table if exists dbo.N;
create table dbo.N (n int primary key);
insert into dbo.N
 (n)
 select top (2000000)
  row_number() over (order by 1/0)
 from
  master.dbo.spt_values a cross join
  master.dbo.spt_values b;
go

declare @v int, @n int = 1000000;

set statistics time on;

select @v = n from dbo.N where n <= @n;

;With a as (
Select t.n from (values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) t(n)
)
Select top(@n)
@v = a0.n + isNull(a1.n,0)*10 + isNull(a2.n,0)*100 + isNull(a3.n,0)*1000 + isNull(a4.n,0)*10000 + isNull(a5.n,0)*100000
from a a0
cross join a a1
cross join a a2
cross join a a3
cross join a a4
cross join a a5

;With a as (
Select t.n from (values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) t(n)
)
Select top(@n)
@v = row_number() over (order by 1/0)
from a a0
cross join a a1
cross join a a2
cross join a a3
cross join a a4
cross join a a5

select @v = row_number() over (order by (select 1/0))
from string_split(REPLICATE(cast(' ' as varchar(max)), @n-1), ' ') x

set statistics time off;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(2000000 rows affected)

 SQL Server Execution Times:
   CPU time = 94 ms,  elapsed time = 93 ms.

 SQL Server Execution Times:
   CPU time = 141 ms,  elapsed time = 146 ms.

 SQL Server Execution Times:
   CPU time = 109 ms,  elapsed time = 96 ms.

 SQL Server Execution Times:
   CPU time = 3672 ms,  elapsed time = 3693 ms.
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096107
spenov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а расскажите, что за магия в запросе "1/0"? как это работает?
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096122
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NIIIK
aleks222,

какие ещё 100лет ?!
Вы к тест-кейсу с 10к значений?
Так это простой тест-кейс. А объёмы берутся когда у тебя ЕТЛ-операции да и обычные запросы пользовательские по списку каких-то сущностей и для каждой из них до сделать какое-то перемножение.

Чем "лучше" и "проще" использовать таблицу фейковую тупо ради строк ?!

Вот надо вам будет расписание для списка каких-то сотрудников вывести (естественно колонки для ГУИ будут строками в вашем дата-сете) - вы что бы получить нужное количество строк будите делать выборки из реальной таблицы?
А если такие расписания просматриваются одновременно многими пользователями в ГУИ ?


Вы не нервничайте - пользуйтесь.
Если по-другому не умеете.

Я для неокрепших умов, шобы не сбивались на скользкий путь.

ЗЫ. 30000 int = 15 страниц в памяти. Можно сколько угодно вопить, но это лучше, чем грузить процессор.
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096134
NIIIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

Ох, дух Глори живёт на СКЛ.ру (может он ещё и сам живёт).

Где был дан ответ на моё сравнение варианты с рекурсивным ЦТЕ и новым c string_split ?
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096136
NIIIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spenov
а расскажите, что за магия в запросе "1/0"? как это работает?


Да никакой магнии, просто оконной функции надо что-то для сортировки, константу туда пихать не получается, чаще (select 1) вкорячивают, он тоже НЕ выполняется и в процессе выполнения нет ошибки.
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096137
NIIIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

О, опять ражигатель набрасывающий на вентилятор...

У меня ум "окреп" ещё 13+ лет назад когда эта тема мной же создавалась.
Что в то время это был костылище, что сейчас костыль, но получше, после появления функции парсящей строку.

Только "по другому не умеете" - это скорее вам. Тот код с "with derevo" я создал вроде как сам, причём я тогда контролировал новый проект на МсСКЛе, хотя изначально пришёл в мир БД с Оракла. И как бы решил задачу :) А разработка тогда не была основной моей задачей.

Но функции парсящей строку на тот момент в принципе не было. И мне как-то вариант новый больше нравится, чем козлячие методы с запросами реальных таблиц, перемножениями и т. п.

Ещё больше бы понравилось бы, если бы МС дело сделал (а не тролей подкармливал защищающих его).
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096140
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NIIIK


У меня ум "окреп" ещё 13+ лет назад когда эта тема мной же создавалась.
Ещё больше бы понравилось бы, если бы МС дело сделал (а не тролей подкармливал защищающих его).


Шо, померимся у кого длиннее?
Помогите написать функцию
17 лет.
Просто я уж не полез ТОГДА в ЭТУ тему, ибо очевидное было фуфло.
Сколько таких тем...
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096553
NIIIK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

Ну это ваша нездоровая идея, а я сказал что уже в 2008ом у меня всё окрепло.

Ох... опять превращаете полезный форум в СКЛсРУ
...
Рейтинг: 0 / 0
Нужное количество строк без использования таблицы
    #40096600
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NIIIK
aleks222,

Ну это ваша нездоровая идея, а я сказал что уже в 2008ом у меня всё окрепло.

Ох... опять превращаете полезный форум в СКЛсРУ


Пойми, страдалец, то, что тебе мерещится - не является истиной.

Ибо
1. Генерация чисел занимает память (причем память НА КАЖДЫЙ вызов) и процессор НА КАЖДЫЙ вызов.
2. Чтение чисел из таблицы занимает ТОЛЬКО память. Причем одну и ту же. Т.е. 1 раз на всех.
...
Рейтинг: 0 / 0
9 сообщений из 59, страница 3 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужное количество строк без использования таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]