powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Быстродействие запроса
4 сообщений из 4, страница 1 из 1
Быстродействие запроса
    #37959993
Llegionss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, у меня такая проблема была таблица, в который 1 Primary Key и 3 Foreign Key. Все Было ок, но потом пришлось поменять Праймери кей и сделать его составным из одного Foreign Key и простого поля. Теперь работает очень медлено и лагает не реально в модель даные загружает очень долго = ( Подскажите в чем проблема если к то то с этим уже вталкивался =) Индекс построен (Create Unique index ON View(ID,ID_Cat)
Заранее спасибо =)
...
Рейтинг: 0 / 0
Быстродействие запроса
    #37960818
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скрипты бы показали, чтобы как-то вникнуть в тему...
...
Рейтинг: 0 / 0
Быстродействие запроса
    #37961219
Llegionss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh,

Пишу на Qt , использую SqLite:
Вот сам запрос:
Код: 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.
"create table View("
                   "ID integer NOT NULL,"
                   "ID_Cat Integer NOT NULL,"
                   "nomer integer integer NOT NULL,"
                   "NClass_1 integer,"
                   "NClass_2 integer,"
                   "Expert_1 integer,"
                   "Expert_2 integer,"
                   "ZOc_1 Varchar(32),"
                   "ZOc_2 Varchar(32),"
                   "Titul_1 Varchar (128),"
                   "Titul_2 Varchar (128),"
                   "Mark_1 Varchar (32),"
                   "Mark_2 Varchar (32),"
                   "Nom_Bis_1 Varchar (64),"
                   "Nom_Bis_2 Varchar (64),"
                   "AddiList Varchar(5) default false,"
                   "Present_1 Varchar(5) default false,"
                   "Present_2 Varchar(5) default false,"
                   "WCF_Master Varchar(5) default false,"
                   "WCF_Ring Varchar(5) default false,"
                   "BreedShow Varchar(5) default false,"
                   "Paying integer,"
                   "AddiNote Varchar (128),"
                   "Selling Varchar(5) default false,"
                   "Title_1 Varchar(5) default false,"
                   "Title_2 Varchar(5) default false,"
                   "NB_1 Varchar(5) default false,"
                   "NB_2 Varchar(5) default false,"
                   "Print Varchar(5) default false,"
                   "ID_MonoDreed integer ,"
                   "ID_WCF_Ring Integer,"
                   "ID_Master_Ring integer,"
                   "ID_Best_1 integer,"
                   "ID_Best_2 integer,"
                   "CONSTRAINT Prim_Key_View PRIMARY KEY (ID_Cat, ID))"


После чего создаю индекс
Код: sql
1.
Create Unique Index ss ON View (ID, ID_Cat)


Вот запрос :
Код: sql
1.
select Animals.ID_Cat,Владелец.ID_Owner, Заводчик.ID_Breeder,View.nomer,Animals.Код_Породы, Окрас.Окрасс ,Animals.Пол,Animals.Кличка,Animals.Дата_рождения,Animals.Родословная,Animals.Отец_Кличка,Animals.Отец_Окрас,Animals.Мать_Кличка,Animals.Мать_Окрас, Заводчик.Заводчики,Владелец.Владелец, Класс_1.Код_Класса, View.Present_1, Experts_1.Судья_1, View.Mark_1, View.Title_1 ,View.Nom_Bis_1 ,Класс_2.Код_Класса,View.Present_2, Experts_2.Судья_2, View.Mark_2,View.Title_2, View.Nom_Bis_2,View.WCF_Master, View.WCF_Ring, View.BreedShow, View.Paying, View.AddiNote, View.Selling from Класс_2, Класс_1, Experts_1, Experts_2, Animals, Заводчик,Владелец ,Окрас, View, Data where Заводчик.ID_Breeder=Animals.ID_Breeder And Владелец.ID_owner=Animals.ID_Owner And View.ID_Cat=Animals.ID_Cat AND View.ID = Data.ID AND Data.current = 'true' AND View.Expert_1=Experts_1.Expert_1 AND View.NClass_1 = Класс_1.Номер_класса AND View.NClass_2 = Класс_2.Номер_класса AND Animals.Код_Окраса = Окрас.Код_Окраса AND View.Expert_2 = Experts_2.Expert_2


Сначала Primary Key было поле nomer, потом пришлось создать составной ключ из двух полей, и выполнятся стал очень долго. Запрос использовался в НАследника QSqlQueryModel и для отображения надо минуты 2 - 3.
...
Рейтинг: 0 / 0
Быстродействие запроса
    #37961473
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LlegionssВот сам запрос:
Код: sql
1.
2.
3.
4.
5.
6.
"create table View("
                   "ID integer NOT NULL,"
                   "ID_Cat Integer NOT NULL,"
                   "nomer integer integer NOT NULL,"
....
                   "CONSTRAINT Prim_Key_View PRIMARY KEY (ID_Cat, ID))"


После чего создаю индекс
Код: sql
1.
Create Unique Index ss ON View (ID, ID_Cat)


Это не запрос, это DDL.
Уже плохо: VIEW это ключевое слово, не надо называть так таблицу.
Убери этот индекс нафиг. Ключ это уже индекс, зачем тебе дубль?

LlegionssВот запрос :И вот в той длинной строке кто-то может разобраться? Форматировать код тебя тоже не учили?

Ну ладно, я сегодня добрый, давай посмотрим:
Llegionss
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select *
from Класс_2, Класс_1, Experts_1, Experts_2, Animals, Заводчик,Владелец ,Окрас, View, Data 
where
   Заводчик.ID_Breeder=Animals.ID_Breeder And
   Владелец.ID_owner=Animals.ID_Owner And
   View.ID_Cat=Animals.ID_Cat AND
   View.ID = Data.ID AND
   Data.current = 'true' AND
   View.Expert_1=Experts_1.Expert_1 AND
   View.NClass_1 = Класс_1.Номер_класса AND
   View.NClass_2 = Класс_2.Номер_класса AND
   Animals.Код_Окраса = Окрас.Код_Окраса AND
   View.Expert_2 = Experts_2.Expert_2


Сначала Primary Key было поле nomer, потом пришлось создать составной ключ из двух полей, и выполнятся стал очень долго. Запрос использовался в НАследника QSqlQueryModel и для отображения надо минуты 2 - 3.Что мы видим в итоге? А видим что View.nomer в запросе не участвует. Значит раньше оно делало полный скан таблицы без использования каких-либо индексов и работало быстро. А теперь индексированные поля находятся в запросе - используется индекс - стало медленно... Вывод?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Быстродействие запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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