Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/71: Рейтинг темы: голосов - 71, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
1

Как Быстро Выполняется Запрос В Большой Базе

27.10.2012, 17:14. Показов 13103. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Представим себе базку с документооборотом 50-100 документов в день. Пусть учет ведется 2 года.
Есть вид документов с признаком "Исполнен/Нет".
И вот человеку надо выбрать все не исполненные. Причем дата у них может быть и древняя. ну может ограничусь последним годом.
Как быстро отработает запрос по поиску таких документов? Хватит 2-3 секунд? Стоит ли этот реквизит индексировать?

Или думать над более изощренным механизмом типа регистр сведений.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2012, 17:14
Ответы с готовыми решениями:

Запрос (INSERT) успешно выполняется 88 раз, но по факту в базе находится только 5 строк. КАК?
Код: $cday = (int)date('j'); $stmt2 = $db->prepare("INSERT INTO `pos_positions_2016-10` (`pid`,...

Не выполняется запрос к базе
пишу импорт для jshopping (joomla) не хватает только присвоения категорий товаров... Делаю с...

Не выполняется запрос к базе данных
В функции korzina генериться запрос вида select * from tovar where id=1 or id=3 и т.п. id...

Как быстро загрузить большой СписокВыбора?
Здравствуйте, я, можно сказать, новичок в программировании на 1С. Не так давно столкнулся с такой...

14
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
28.10.2012, 04:35 2
Проверил.
Примерно 50 документов вида Заказ-наряд в день (документ огромный - около 70 рекв. шапки). Базе год и 2 месяца.
Реквизит "Закрыт" типа булево. Неидексируемый. У большинства документов значение "Истина".
В консоле запрос по закрытым выполнился за 1-2 секунды. Правда в режиме одного пользователя на локальной SQL копии.
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
28.10.2012, 11:58 3
unknown181538, конфигурация "Альфа-Авто"?


Дайнеко, а почему регистр сведений? Может тогда регистр накопления, а к нему "исполняющий" документ тогда еще прикрутить? Перебирать документы - как-то не совсем красиво, ИМХО.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
28.10.2012, 19:19 4
Цитата Сообщение от Darlock
unknown181538, конфигурация "Альфа-Авто"?
УТ 11 допиленная.


Цитата Сообщение от Darlock
Дайнеко, а почему регистр сведений? Может тогда регистр накопления, а к нему "исполняющий" документ тогда еще прикрутить? Перебирать документы - как-то не совсем красиво, ИМХО.
Во-первых не описана задача. Во-вторых причем тут накопление?
Кстати, подозреваю, что при любом раскладе дальнейшая обработка запроса будет занимать гораздо больше времени.
0
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
29.10.2012, 19:24 5
Цитата Сообщение от Darlock
Дайнеко, а почему регистр сведений? Может тогда регистр накопления, а к нему "исполняющий" документ тогда еще прикрутить? Перебирать документы - как-то не совсем красиво, ИМХО.
А что там накапливать? Какой ресурс придумать? Разве что устроить движение по ресурсу +1 стал на контроль, -1 ушел с контроля.
А с регистром сведений можно было бы устроить игру по правилам:
* ставиться на контроль - проведение вносит документ в регистр
* снимается с контроля - перепроводится документ без записи в регистр, т.о. старая запись убирается.
Получится, что регистр будет содержать готовый перечень "висящих" на контроле.

Разумеется, выборка по нему будет мгновенной. Я вот и думаю стоит ли затевать, если время 1-2 секунды приемлемо даже для примитивной выборки.


Реквизит "Закрыт" типа булево. Неидексируемый. У большинства документов значение "Истина".
В консоле запрос по закрытым выполнился за 1-2 секунды.
А если реквизит проиндексировать, поди в разы быстрее отработает.

Так что спасибо ответившим.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
30.10.2012, 08:43 6
1-2 секунды - это в консоли, т.е. вместе с выводом результата.
И вообще, как будет обрабатываться результат запроса?
Я не понимаю, о чем вы все.
0
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
31.10.2012, 10:35 7
Цитата Сообщение от unknown181538
И вообще, как будет обрабатываться результат запроса?
Я не понимаю, о чем вы все.
Я сильно расстраиваюсь, когда меня не понимают. :(
Задача минимально проста. Пришел утром на работу начальник цеха. Говорит компу: "Дай мне список Не исполненных заказов. Всех (в смысле независимо от даты".
Вот и думаю, достаточно ли простого запроса.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
31.10.2012, 15:50 8
Цитата Сообщение от Дайнеко
Я сильно расстраиваюсь, когда меня не понимают. :(
Задача минимально проста. Пришел утром на работу начальник цеха. Говорит компу: "Дай мне список Не исполненных заказов. Всех (в смысле независимо от даты"
Вот и думаю, достаточно ли простого запроса.
ОК. Отмечу, что я выполнял запрос по наоборот исполненным, которых 95 процентов.
Если я делаю в списке отбор по периоду, разве это не запрос с отбором по реквизиту? Если мы сделаем регистр сведений, то придется делать соединение для получение реквизитов документа?
Завтра попробую сделать точное измерение именно запроса и в рабочее время)
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
06.11.2012, 15:31 9
Попробую забить гвоздь в тему.

Код:

Код ( (Unknown Language)):
&НаСервере
Процедура НаСервере(ТабДок)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ЭА_ЗаказНаряд.Ссылка) КАК пр
|ИЗ
| Документ.ЭА_ЗаказНаряд КАК ЭА_ЗаказНаряд
|ГДЕ
| НЕ ЭА_ЗаказНаряд.Закрыт";


Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
ЭА_Сообщить(ТабДок,Выборка.Пр,1);
КонецЦикла;

КонецПроцедуры



&НаКлиенте
Процедура Команда1(Команда)
ТабДок = Новый ТабличныйДокумент;
НаСервере(ТабДок);
ЭА_ПоказатьСообщения(ТабДок);
КонецПроцедуры
ЭА_Сообщить() выводит секцию таб дока. Правда неоптимально - макет получается в цикле, и области тоже.
Выкладываю замер производительности.
Видим, что запрос выполняется 0.01 с. В несколько раз быстрее, чем ТабДок.Показать().
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
08.11.2012, 00:52 10
Нихт, ИМХО.

1. Обращение в запросе к реальной таблице документов
2. Обращение в запросе к реальной таблице документов (если не проводной), то без ограничений на пометку удаления.

Опять же - по идее:

Документ должен быть проводной, следовательно должны быть регистры в которых документ регистратор.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
08.11.2012, 17:24 11
Цитата Сообщение от Darlock
1. Обращение в запросе к реальной таблице документов
2. Обращение в запросе к реальной таблице документов (если не проводной), то без ограничений на пометку удаления.

Опять же - по идее:

Документ должен быть проводной, следовательно должны быть регистры в которых документ регистратор.
2 отметается. Мой документ всегда проводится, и никогда не помечается на удаление.

Запрос к реальной таблице регистра сведений с соединением с таблицей документа для получения реквизитов чем-то лучше?
Плодим лишние сущности для того, чтобы сэкономить 0.01 с или для выполнения догм?
Повторю вопрос, отображение списка документов - это не запрос к реальной таблице? К тому же, запрос к виртуальной таблице как правило - соединение таблиц, т.е. менее предпочтителен, мы же не остатки считаем.
Вообще, не видел нигде в типовых никаких регистров для вывода реестров.
Регистры есть, но документ может и не иметь движений. Да и если бы были, обращаться к регистру накопления для отбора по реквизиту документа? Предложите свой код.
0
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
08.11.2012, 22:21 12
Цитата Сообщение от unknown181538
Попробую забить гвоздь в тему.
Молодец - забил по полной.
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
11.11.2012, 20:42 13
unknown181538, стоп. Давайте не будем путать "х*й с трамвайной ручкой".
1. Список документов или виртуальная таблица - безусловно запрос реальной таблице, но выполненный платформой. А это большая разница.
Во-вторых никогда не говори "никогда" (про пометку удаления).
В-третьих: изначально был вопрос про выбор документов которые не исполнены. Исполненность указывается руками в прошлых периодах? Странно.
4. Мы гонимся за "как быстрее" или как правильно писать код? Если как быстрее, тогда да, давайте в циклах пускать запросы по физическим таблицам.

Мой фрагмент кода - ... а я не знаю, что именно вы уже хотите получить. Тупо отобрать - индекс на "исполненность" и далее "отбор" по этому полю. Этот "фрагмент" тупо - форма списка по неведомому реквизиту исполненности.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
12.11.2012, 05:11 14
"Во-вторых никогда не говори "никогда" (про пометку удаления)."
Ее невозможно поставить руками. И это было еще в базе 7.7 сколько -то лет назад.
"1. Список документов или виртуальная таблица - безусловно запрос реальной таблице, но выполненный платформой. А это большая разница. "
А этот запрос выполняется не платформой?
"В-третьих: изначально был вопрос про выбор документов которые не исполнены. Исполненность указывается руками в прошлых периодах? Странно." У меня при простановке исполненности документ переезжает на текущую дату. Неисполненный может быть в любом периоде.
"4. Мы гонимся за "как быстрее" или как правильно писать код? Если как быстрее, тогда да, давайте в циклах пускать запросы по физическим таблицам." Гонимся много за чем. Например, запись в лишний регистр сведений - лишнее время при проведении. Лишний код и лишний объект - это тоже жертва. В данном случае неоправданная.
"Тупо отобрать - индекс на "исполненность" и далее "отбор" по этому полю. Этот "фрагмент" тупо - форма списка по неведомому реквизиту исполненности."
Я опять не понимаю. Чем это отличаетс от моего варианта?
0
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
12.11.2012, 13:19 15
Спор ниочем. Поступайте как считаете нужным.
0
12.11.2012, 13:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2012, 13:19
Помогаю со студенческими работами здесь

Как быстро отсортировать большой массив?
Не силен в сортировках. ( Как быстро отсортировать большой массив в Delphi? Есть двумерный...

Как Быстро Загрузить Большой Списоквыбора?
Здравствуйте, я, можно сказать, новичок в программировании на 1С. Не так давно столкнулся с такой...

Как быстро добавить в WinRar большой файл
Как быстро добавить в WinRar большой файл Есть например файл rar больше 350 Гб, в нем само собой...

Как максимально быстро считать очень большой текст из файла
как максимально быстро считать ооочень большой текст из файла и поеместить в richTextBox1?

Как быстро проверить, что строка начинается с большой буквы
Как быстро проверить, что строка начинается с заглавной русской буквы? Можно с помощью...

FadeIn() при первом клике не выполняется а быстро появляется текст, как show()>
fadeIn(600); при первом клике не выполняется а быстро появляется текст, как show()>.) вот код,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru