powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Оптимизация запроса
19 сообщений из 19, страница 1 из 1
Оптимизация запроса
    #39177575
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите, люди добрые, как-то можно оптимизировать запрос?
Код: sql
1.
2.
3.
4.
5.
6.
select * 
  from report, report_detailed, partner 
where report.number_scan=report_detailed.number_scan and 
         partner.id=report.id_partner and 
         report_detailed.id_client='89858' and 
         partner.id='ekaterina.alshanskaya'
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177585
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leg_mgn,

select 1
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177590
_djХомяГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вряд ли Вам помогут без предоставленных DDL таблиц и плана
PS А зачем джойните по старинке через запятые хотя это не имеет отношения к вопросу
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177684
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Структура таблиц
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE `report` (
	`number_scan`	INTEGER,
	`id_partner`	TEXT,
	`count`	INTEGER,
	`count_new`	INTEGER,
	`datetime`	datetime
);



Код: sql
1.
2.
3.
4.
5.
CREATE TABLE `report_detailed` (
	`number_scan`	INTEGER,
	`id_client`	TEXT,
	`datetime`	datetime
);




Код: sql
1.
2.
3.
4.
5.
CREATE TABLE `partner` (
	`id`	TEXT,
	`status`	TEXT,
	`fio`	TEXT
);
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177690
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
это точно MS SQL Server?
кавычки левые + id_partner типа TEXT .
последнее -- это полный охренизм
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177693
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o-oэто точно MS SQL Server?
кавычки левые + id_partner типа TEXT .
последнее -- это полный охренизм
Это SQLite. Задал в этом топике, т.к. его больше посещают... а оптимизация запроса от этого не изменится....
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177709
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
leg_mgno-oэто точно MS SQL Server?
кавычки левые + id_partner типа TEXT .
последнее -- это полный охренизм
Это SQLite. Задал в этом топике, т.к. его больше посещают... а оптимизация запроса от этого не изменится....
еще как изменится.
SQL Server знаете, как TEXT хранит?
это самое тормозное, что только можно придумать.
вот, например, переведя все тексты в варчары разумной длины ого как скорость чтения/записи повысится
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177715
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o-oleg_mgnпропущено...

Это SQLite. Задал в этом топике, т.к. его больше посещают... а оптимизация запроса от этого не изменится....
еще как изменится.
SQL Server знаете, как TEXT хранит?
это самое тормозное, что только можно придумать.
вот, например, переведя все тексты в варчары разумной длины ого как скорость чтения/записи повысится
Хорошо, создам тему в топике SQLite
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177721
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
create index <...> on report_detailed (id_client)
create index <...> on partner (id)

это если вопрос "какие индексы помогли бы"
а след. вопрос, точно ли все поля вывести надо (*)
и готовы ли вы в INCLUDE запихнуть недостающее.
и есть ли вообще это самое INCLUDE в вашем SQLite
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177725
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите, люди добрые, как-то можно оптимизировать запрос?

Код: sql
1.
2.
3.
4.
5.
6.
select * 
 from report, report_detailed, partner 
where report.number_scan=report_detailed.number_scan and 
         partner.id=report.id_partner and 
         report_detailed.id_client='89858' and 
         partner.id='ekaterina.alshanskaya'


Структура таблиц

Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE `report` (
	`number_scan`	INTEGER,
	`id_partner`	TEXT,
	`count`	INTEGER,
	`count_new`	INTEGER,
	`datetime`	datetime
);



Код: sql
1.
2.
3.
4.
5.
CREATE TABLE `report_detailed` (
	`number_scan`	INTEGER,
	`id_client`	TEXT,
	`datetime`	datetime
);



Код: sql
1.
2.
3.
4.
5.
CREATE TABLE `partner` (
	`id`	TEXT,
	`status`	TEXT,
	`fio`	TEXT
);
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177730
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o-ocreate index <...> on report_detailed (id_client)
create index <...> on partner (id)

это если вопрос "какие индексы помогли бы"
а след. вопрос, точно ли все поля вывести надо (*)
и готовы ли вы в INCLUDE запихнуть недостающее.
и есть ли вообще это самое INCLUDE в вашем SQLite
Поля все не нужны, достаточно одного любого.
Про все остальное - плохо понимаю, но вроде индексов нет
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177744
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
тогда начните оптимизацию с перечисления в запросе лишь нужных полей.
и индексы подправьте с учетом недостающих в них колонок.
а кто просил оптимизировать-то?
а то может ваш запрос запускают раз в месяц, а инсертят в таблицы постоянно.
а вы сейчас насоздаете индексов и замедлите все вставки.
и будет у вас антиоптимизация
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39177769
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Селекты идут раз в несколько секунд на протяжение нескольких часов.
Инсерты и апдейты по несколько штук в минуту.

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39178045
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leg_mgn,

Индексов, так понимаю, нет?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39178051
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ориентировочно, сколько записей в таблицах? как много и часто будут данные добавляться? и по каким полям будут выборки?
Далее уже можно строить индексы. А сейчас долго выбирается? а почему id_client, id - задекларированы как TEXT ?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39178132
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLADleg_mgn,

Индексов, так понимаю, нет?
индексов нет, на данный момент дела с ними не имел, поэтому не шарю в них...Если не сложно на пальцах рассказать для чего, плюсы и минусы.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39178138
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLADОриентировочно, сколько записей в таблицах? как много и часто будут данные добавляться? и по каким полям будут выборки?
Далее уже можно строить индексы. А сейчас долго выбирается? а почему id_client, id - задекларированы как TEXT ?

В таблице report_detailed около 800 000 записей, вполне вырастит и до 1 млн. В двух других 500 и несколько тысяч.
Выборка по любому полю, смотрю есть ли запись или нет, поэтому вместо * можно указать одно любое поле - не критично.
Обращение идет к базе идет частое: в течение 10 минут около 15 тыс запросов (10 тыс простых с одной табл и одним условием и 5 тыс приведенный выше запрос). Затем пачкой (через begin transaction; commit) инсерты и апдейты в районе 100-300 шт.

id_client, id - можно описать и как числовой тип - разве быстрее будет?

У меня идет работа с базой в районе 5-10 часов - хотелось бы быстрее...

Про индексы ничего не знаю к сожалению, пошел читать)
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39178517
leg_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал индексы, на операцию, на которую тратилось около 13 минут, стало тратиться примерно 3-4 сек. Всем спасибо) Теперь общее сканирование думаю пройдет за час, другой)
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39179658
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leg_mgn,

Индексы в итоге по каким полям сделал - покажи скрипты?

1. id_client, id - если там всегда числа, то туда лучше и писать числа - сократишь объем базы
(но если это уже все работает то поздно пить боржоми :)
2. report_detailed.id_client='89858' and partner.id='ekaterina.alshanskaya'
это приводит к разбору запроса
лучше делать так
report_detailed.id_client=? and partner.id=?
и биндить нужные параметры, если подобное выполняется много раз - будет эффективнее.
аналогичное и при insert-ах
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Оптимизация запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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