|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
В таблице указаывается диапазон значения Код: plaintext 1. 2. 3. 4. 5.
нужно составить таблицу с перечислением этих значений Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2004, 17:39 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
На мой взгляд это лучше делать в клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2004, 16:40 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
В общем-то тебе правильно подсказали. Можно еще табличку зафигачить уже с готовыми знаениями... А можно и переменные попробовать использовать... Тут я пока ни придумать ни проверить не могу! . http://sql.ru/]mahoune ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2004, 15:49 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
system2002 На мой взгляд это лучше делать в клиенте Сейчас так все и делается, правда с некоторой оптимизацией, но все равно процесс долгий. mahouneМожно еще табличку зафигачить уже с готовыми знаениями... А поподробней можно? ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2004, 17:14 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
Спасибо всем кто отклинулся. Нашел изящное решение, может кому пригодиться. Делается это на стороне сервера, одним sql скриптом, только нужно сделать подготовительные действия. 1. Создаем табличку целых чисел от 0 до max(EndA - BeginA) любым удобным способом. Можно и больше взять. Код: plaintext
2. И основной запрос Код: plaintext 1. 2. 3. 4.
________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2004, 12:14 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
Очень медленный способ. гораздо проще сделать цикл внутри приложения, особенно если перебираются целые числа ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2004, 16:15 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
stellarОчень медленный способ. очень смелое заявление, но, к счастью, неверное! stellarгораздо проще сделать цикл внутри приложения, особенно если перебираются целые числа сразу возникают возражения: 1) их треда следует, что первоначальный вариант именно так и был реализован, но по извесным причинам он не устаривал. 2) а Вы накладные расходы прикинули, скажем, на коммуникацию? 3) пример тестовый, приведены только те столбцы которые имеют отношение к интересующему меня вопросу. В общем, ради собственного интереса, проведите тестирование двух вариантов. Думаю, Вам многое станет ясным. Есть еще одно обстоятельство публикации этого скрипта -- можно решить эту задачу средствами SQL и показано как. ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2004, 19:09 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
А что если сделать функцию для MySQL которая выводит этот список??? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 09:47 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
очень смелое заявление, но, к счастью, неверное! сразу возникают возражения: 1) их треда следует, что первоначальный вариант именно так и был реализован, но по извесным причинам он не устаривал. 2) а Вы накладные расходы прикинули, скажем, на коммуникацию? 3) пример тестовый, приведены только те столбцы которые имеют отношение к интересующему меня вопросу. В общем, ради собственного интереса, проведите тестирование двух вариантов. Думаю, Вам многое станет ясным. Есть еще одно обстоятельство публикации этого скрипта -- можно решить эту задачу средствами SQL и показано как. Эта задача средствами SQL решается крайне неэффективно. Создание временной таблицы + две выборки вместо одной + простого цикла - это самое отвратительное решение, которое только можно предложить. OS: FreeBSD, использована библиотека mysql++. СУБД - MySQL 4.0; таблицы - предлженные в примере. Спешу Вас разочаровать, но разница - 1800 раз. В пользу простого цикла. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 18:46 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
а по подробней можно? Я что-то не до конца понимаю.... готов поверить в разницу в 2 раза, но 3(!) порядка... уж простите, но код, тестовый скрипт хотелось бы увидеть, воспроизвести результаты... Я получал такие данные (восстанавливаю по записям)... ОС -- WindowsXP(SP1) СУБД -- MySQL 4.0.16 Исходные данные: Таблица tbl1 - 143100 записей (исходная) Таблица tbl2 - 1230000 записей (развернутая) Вариант 1. "Разворот" таблицы на клиенте. Язык приложения -- ActiveState Perl 5.8.0 Библиотека -- MySQL.pm Взята с официального сайта (dev.mysql.com) Время выполнения -- 3 мин 21 сек Вариант 2. Средствами SQL запроса Скрипт загружался через утилиту mysql.exe Время выполнения -- 58 сек. Я получил разницу в 3 раза. ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 20:38 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
Использовался C++ - потому такая разница. Для Перла, конечно, все не так заметно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 15:14 |
|
Как "развернуть" таблицу
|
|||
---|---|---|---|
#18+
stellarИспользовался C++ - потому такая разница. в 1800 раз???? Перл, компилируются в промежуточный байт-код, который затем и исполняется. Технология которая в настоящее время довольно широко применяется и соответсвенно отработана. Поэтому если и есть отставание то не такое катастрофичекое! Кстати, компиляторы SQL тоже подобную технологию используют. Это первое. Второе, мощность процессоров сегодня достаточна чтобы нивелировать даже эту разницу между Perl и C++ на таки небольшом объеме данных. И основное, меня очень смущает Ваша чрезмерная краткость. Ни результаты таймингов, ни описание теста, ничего.... Такое подозрение -- а не громогласнное ли это заявление? ________________ С уважением, Alex Pretov ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 16:05 |
|
|
start [/forum/topic.php?fid=47&fpage=688&tid=1855243]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 141ms |
0 / 0 |