Переключение на Главную Страницу Страницы: 1 ... 58 59 [60] 61 62 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 458036 )
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #885 - 04. Мая 2017 :: 20:35
Печать  
Пробовал в условие внутреннего Select-а написать типа
Код (SQL)
Выбрать все
And Отбор.Idx_MDID_PARENTVAL_CHILDDATE_CHILDTIME_CHILDID Between :ГрафаОтбора.КлиентПриходных || 'B1' || :ВидСправочника.Клиенты || :Клиент And :ГрафаОтбора.КлиентПриходных || 'B1' || :ВидСправочника.Клиенты || :Клиент || 'z' 


Скорость одиночного запроса увеличивалась с 7-и сек до 1, но это всё равно не 0.1 и общий запрос зависает
Еще вопрос где описано как читать планы, особенно Explain без Query Plan ?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #886 - 05. Мая 2017 :: 10:13
Печать  
alyuev писал(а) 04. Мая 2017 :: 19:56:
отрабатывает 0,1 – 0,2 сек на старой библиотеке и ~ 7 сек на новой
на журнал нет ограничений по дате т.к. ищем последний документ в журнале неважно когда он был и из него берём Заказ
Можно ли как-то явно указать какой индекс использовать первым без плюсов ?


Ограничение, я об этом писал, мешает оптимизатору.

Хинт для sqlite: select max(дата), договор выдаст последний договор. На оригинальных версиях 1sqlite работать не будет т.к. добавлено в 3.7.11, а в 1.0.2.6 - 3.7.10.
Так можно попасть на индекс ACDATETIME - будет быстрее. Можно и в DOCTYPE целиком попасть - совсем хорошо будет.
На mysql так не работает, был опечален...

Для баз sqlite можно указать индекс с помощью indexed by, а вот для виртуальных таблиц нет. sqlite вообще ничего не знает об их индексах. В вт подаются предположения, а вт уже сама принимает решение. Так что управлять можно только подавлением предположений использования индекса. Или указывать составной idx_ЧтоТоТам, но это не всегда получается удачно.

Описание вывода explain https://sqlite.org/vdbe.html
« Последняя редакция: 05. Мая 2017 :: 12:59 - Djelf »  
Наверх
www  
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: 1sqlite
Ответ #887 - 01. Июня 2017 :: 04:23
Печать  
Решил таки освоит CTE, использую 1sqlite_3.16.2.14
И вот тут никак не могу перебороть сортировку.
Вот запрос:

WITH cte (element, Parent, level, fullName)
AS (
     SELECT ID, PARENTID, 0, trim(DESCR)
     FROM [Справочник.Города] as City
     WHERE PARENTID = :ПустойИД
     UNION ALL
     SELECT ID, PARENTID, t.level + 1, t.fullName || '\' || trim(DESCR)
     FROM [Справочник.Города] as Next
     INNER JOIN cte t
     ON t.element = Next.PARENTID
     )
SELECT
     element [Элемент :Справочник.Города]
     , Parent [Родитель :Справочник.Города]
     , level [Уровень :Число.15.0]
     , fullName
FROM
     cte      
ORDER BY
     fullName collate _1C

Но почему он упорно сортирует вот так:

Администрация\Администрация
Администрация
Братск
Иркутская область\Ангарск\Ангарск
Иркутская область\Ангарск
........
Иркутская область\Тулун\Тулун
Иркутская область\Тулун
Иркутская область\Усолье-Сибирское, Черемхово\Усолье-Сибирское
Иркутская область\Усолье-Сибирское, Черемхово\Черемхово
Иркутская область\Усолье-Сибирское, Черемхово
Иркутская область\УстьИлимск\УстьИлимск
Иркутская область\УстьИлимск
Иркутская область

т.е. чем короче строка тем она ниже.

  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #888 - 01. Июня 2017 :: 12:09
Печать  
Sserj писал(а) 01. Июня 2017 :: 04:23:
t.fullName || '\' || trim(DESCR)


t.fullName || ISFOLDER || DESCR

никаких trim`ов

пример дерева на cte https://cloud.mail.ru/public/uQLv/QQkBGQxSu
  
Наверх
www  
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: 1sqlite
Ответ #889 - 01. Июня 2017 :: 13:28
Печать  
Djelf писал(а) 01. Июня 2017 :: 12:09:
Sserj писал(а) 01. Июня 2017 :: 04:23:
t.fullName || '\' || trim(DESCR)


t.fullName || ISFOLDER || DESCR

никаких trim`ов

пример дерева на cte https://cloud.mail.ru/public/uQLv/QQkBGQxSu


Да это понятно, в данном случае я просто смотрел будет ли это быстрее чем ПолноеНаименование().
Но ведь это все равно не объясняет такую сортировку.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #890 - 01. Июня 2017 :: 16:55
Печать  
Sserj писал(а) 01. Июня 2017 :: 13:28:
Да это понятно, в данном случае я просто смотрел будет ли это быстрее чем ПолноеНаименование().
Но ведь это все равно не объясняет такую сортировку.


Было бы быстрее наверное, но не получится.
trim там все портит, и как разделитель '\' не очень хорошо, он позже пробела
Голову сломал как бы выкрутится так чтобы не городить такие длинные строки.

Но действительно очень странно, видимо глюк в sqlite.

Если убрать collate _1c то нормальная сортировка.
Если перенести order by внутрь cte то что с collate, что без него все нормально.

Только если order by collate _1c снаружи cte.

  
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #891 - 04. Июня 2017 :: 16:11
Печать  
Все чудесатее и чудесатее... Вот так работает сортировка снаружи cte
ORDER BY cast(fullName as blob)  collate _1c
  
Наверх
www  
IP записан
 
Andrey (sttt)
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Января 2009
Пол: Мужской
Re: 1sqlite
Ответ #892 - 25. Июля 2017 :: 09:22
Печать  
Djelf писал(а) 27. Января 2017 :: 18:36:
А я то, дурачина, проверяю
Код (SQL)
Выбрать все
SELECT -9223372036854775808,9223372036854775807 


Сейчас гляну где.

3.7.х сильно нужна?

upd1: нашел где, потребуется некоторое время чтобы скорость не пострадала.
upd2: исправлено в 3.16.2.14 https://cloud.mail.ru/public/9znr/ZJ6ULE9aR скорость вроде не упала.

В принципе можно раскачать до +18446744073709551615 это больше длины числового поля в справочнике, но это только в 3.16 появилось.


где скачать последнюю версию?
  
Наверх
 
IP записан
 
Andrey (sttt)
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Января 2009
Пол: Мужской
Re: 1sqlite
Ответ #893 - 25. Июля 2017 :: 10:18
Печать  
Что делаю не так?
Сообщить("Кол=" + запрос.ВыполнитьЗапрос("
{обработка.ERT(317)}: no such table: Справочник.Номенклатура

Пример выполняю из документации:
     база.Открыть(":memory:");
     // Создадим выполнитель запросов.
     запрос = база.НовыйЗапрос();
     // Так как база в памяти, то журналирование нам ни к чему, только зря будет отнимать время
     запрос.ВыполнитьЗапрос("PRAGMA journal_mode = OFF");
     // Подключим таблицу справочника товаров к SQLite
     //запрос.ВыполнитьЗапрос("create virtual table Товары using dbeng(Справочник.Номенклатура)");
     //запрос.ВыполнитьЗапрос("create virtual table Nom using dbeng(Справочник.Номенклатура)");
     // А теперь посчитаем, сколько у нас в справочнике элементов, без учета групп
     Сообщить("Кол=" + запрос.ВыполнитьЗапрос("
     |select count(*)
     |from Справочник.Номенклатура as prod
     |where prod.isfolder = 2
     |").ПолучитьЗначение(1, 1));

и в квадратных скобках выполнял [Справочник.Номенклатура] и так sc84
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #894 - 25. Июля 2017 :: 10:20
Печать  
Andrey (sttt) писал(а) 25. Июля 2017 :: 09:22:
где скачать последнюю версию?

там же https://cloud.mail.ru/public/9znr/ZJ6ULE9aR
новее 3.6.2.14 пока не собирал
  
Наверх
www  
IP записан
 
Andrey (sttt)
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Января 2009
Пол: Мужской
Re: 1sqlite
Ответ #895 - 26. Июля 2017 :: 08:55
Печать  
Спасибо, все заработало
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #896 - 25. Октября 2017 :: 13:34
Печать  
Кто-то использует метод ПолучитьТекстЗапроса()? Он вообще работает?
У меня ошибку выдает.

Почему спрашиваю - хочу получить все элементы, которые будут отбражаться в ТабличномПоле, а провайдер для него установлен SQLiteDataProvider (в классе ПоставщикДанных). И как я понимаю - получить этот список можно выполнив запрос, который был передан SQLiteDataProvider



А... блин... Семен-Семеныч..... Надо-таки документацию читать.... Там черным по белом написано... Есть параметр....
« Последняя редакция: 25. Октября 2017 :: 14:43 - alyuev »  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #897 - 03. Ноября 2017 :: 12:42
Печать  
Добрый день.
Подскажите как сделать запрос.
Есть подчиненный справочник. В нем нужно сделать выборку всех значений с указанием в колонке текстового значения справочника владельца (чтобы у каждой позиции можно было увидеть какому значению справочника владельца она принадлежит.
Спасибо.
  
Наверх
 
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: 1sqlite
Ответ #898 - 03. Ноября 2017 :: 15:41
Печать  
SELECT
  ParentExt [Владелец :Справочник.НазваниеСправочникаВладельца]
, id [Элемент :Справочник.НазваниеПодчСправочника]
FROM
  Справочник_НазваниеПодчСправочника
  
Наверх
 
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #899 - 03. Ноября 2017 :: 16:44
Печать  
Спасибо большое
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 58 59 [60] 61 62 ... 79
ОтправитьПечать