powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Медленно работает запрос.
9 сообщений из 59, страница 3 из 3
Медленно работает запрос.
    #38471361
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему в планах key_len=9 там, где по идее должно быть 8 ? Кто в курсе?
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38471363
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TRPID надо перенести в таблицу Visits и сделать индекс TRPID, VisitIn
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38471369
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftА почему в планах key_len=9 там, где по идее должно быть 8 ? Кто в курсе?И своя же версия - это DEFAULT NULL у одного из полей индекса такое дает?
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38471490
Korni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь!
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38471722
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KorniВы писали, что если по условию C.TRPID ='70010' отбирается одна запись, то это может помочь. Но там отбирается 13 записей. Правда это самый запущенный случай. Обычно это 2-3 записи. Видимо поэтому индекс не помог.
.

Я описался, потом хотел исправить, но забыл. Конечно, имелось в виду, что записей мало, а не что она только одна.
13 -- это тоже мало.

На счёт всего остального -- мало написать правильно запрос и создать правильный индекс, нужно ещё убедиться, что оптимизатор будет использовать этот индекс. А если не использует, и вы уверены, что должен -- заставить его это делать.

KorniЯ так понимаю следующим шагом мне надо создать в таблице визитов поле TRPID, но при этом в таблице клиентов оно тоже сохраняется. И тогда в запросе у меня отсеется таблица клиентов. Плюс создать индекс по полям VisitIN, TRPID, BranchID. Тогда скорость должна еще повысится.

Ну, можно и так.

Но я бы ещё раз хотел поглядеть на последний вариант запроса и таблиц.

show create table со всех таблиц и запрос давайте.
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38471724
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowTRPID надо перенести в таблицу Visits и сделать индекс TRPID, VisitIn

Уже не нужно. Можно и так оставить.
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38471730
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korni,

ещё вопрос, что такой запрос выдаёт?

Код: sql
1.
2.
3.
4.
SELECT count(*)
FROM Visits V
  JOIN Clients C ON V.ClientID=C.ClientID AND V.BranchID=C.BranchID AND C.BranchID<>1
WHERE V.VisitIn BETWEEN '2013-10-01' AND '2013-10-30' AND C.TRPID ='70010'  ;




сколько тут записей будет ?
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38472760
Korni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivKorni,

ещё вопрос, что такой запрос выдаёт?

Код: sql
1.
2.
3.
4.
SELECT count(*)
FROM Visits V
  JOIN Clients C ON V.ClientID=C.ClientID AND V.BranchID=C.BranchID AND C.BranchID<>1
WHERE V.VisitIn BETWEEN '2013-10-01' AND '2013-10-30' AND C.TRPID ='70010'  ;




сколько тут записей будет ?
здесь у меня 44 записи получается
...
Рейтинг: 0 / 0
Медленно работает запрос.
    #38472797
Korni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivshow create table со всех таблиц и запрос давайте.

Что-то я немного сегодня в шоке, запустила план вроде как последнего запроса, но картина немного изменилась. Почему-то в визитах получается 11 записей.

вот план


В общем последний запрос выглядит так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT V.VisitID, CME.ClientsMarketingExpID, V.BranchID as BranchID, 
      V.ClientID, V.`Group` as "Group", V.ClientType, V.ClientSize, 
      V.VisitType, V.VisitIn as `In`, V.VisitOut as `Out`, V.Balance, V.Rate, V.MaxRisk, 
      V.Automat, V.MarketingSum, V.MarketingNotes,
      V.ChangeTime, V.VersionID, V.UserID, V.Is2ndVisit, V.IsTypicalClient,
      CME.Code, CME.Sum, CME.Notes, CME.PlayMachineID, 
      CME.TimeIn, CME.PlayMachineID, C.GamblerCode, 
      C.NickName, C.Type, C.TRPID, Date(Date_Format(V.VisitIn, '%Y-%m-%d')) as DateIn, IF(B.BranchName is null, Cast(V.BranchID as char), B.BranchName) as BranchName
FROM Visits V
  JOIN Clients C ON V.ClientID=C.ClientID AND V.BranchID=C.BranchID AND V.BranchID<>1 AND C.TRPID ='70010'
  LEFT JOIN  ClientsMarketingExp CME ON V.VisitID=CME.VisitID AND V.BranchID=CME.BranchID
  LEFT JOIN Branches B ON V.BranchID=B.BranchID
WHERE V.VersionID<>-1  AND V.VisitIn BETWEEN '2013-10-01' AND '2013-10-30'  
ORDER BY V.VisitIn, CME.TimeIn;



таблицы
Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
CREATE TABLE `clients` (
  `ClientID` int(11) NOT NULL DEFAULT '0',
  `BranchID` int(11) NOT NULL DEFAULT '0',
  `NickName` varchar(100) DEFAULT NULL,
  `Name` varchar(50) DEFAULT NULL,
  `Surname` varchar(100) DEFAULT NULL,
  `Activity` tinyint(1) DEFAULT NULL,
  `GamblerCode` varchar(20) DEFAULT NULL,
  `Group` varchar(10) DEFAULT NULL,
  `Type` varchar(10) DEFAULT NULL,
  `Size` varchar(10) DEFAULT NULL,
  `ChangeTime` datetime DEFAULT NULL,
  `CreateTime` datetime DEFAULT NULL,
  `VersionID` int(11) DEFAULT NULL,
  `UserID` varchar(20) DEFAULT NULL,
  `UserZales` varchar(50) DEFAULT NULL,
  `IsTypicalClient` tinyint(1) DEFAULT NULL,
  `Deleted` tinyint(1) DEFAULT NULL,
  `DeleteDate` datetime DEFAULT NULL,
  `SortOrder` int(11) DEFAULT NULL,
  `TRPID` varchar(10) DEFAULT NULL,
  `Birthday` datetime DEFAULT NULL,
  `NameDay` datetime DEFAULT NULL,
  `Age` tinyint(4) DEFAULT NULL,
  `Occupation` varchar(100) DEFAULT NULL,
  `TRPReport` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`ClientID`,`BranchID`),
  KEY `TRPID` (`TRPID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

-------

CREATE TABLE `clientsmarketingexp` (
  `ClientsMarketingExpID` int(11) NOT NULL DEFAULT '0',
  `BranchID` int(11) NOT NULL DEFAULT '0',
  `ClientID` int(11) DEFAULT NULL,
  `NickName` varchar(100) DEFAULT NULL,
  `GamblerCode` varchar(20) DEFAULT NULL,
  `Code` varchar(5) DEFAULT NULL,
  `ChangeTime` datetime DEFAULT NULL,
  `CreateTime` datetime DEFAULT NULL,
  `TimeIn` datetime DEFAULT NULL,
  `PlayMachineID` tinytext,
  `Sum` decimal(9,2) DEFAULT NULL,
  `UserID` varchar(20) DEFAULT NULL,
  `UserZales` varchar(50) DEFAULT NULL,
  `VisitID` int(11) DEFAULT NULL,
  `BranchName` varchar(25) DEFAULT NULL,
  `VersionID` int(11) DEFAULT NULL,
  `Notes` varchar(200) DEFAULT NULL,
  `Parbaudits` varchar(100) DEFAULT NULL,
  `VideoPiezimes` varchar(100) DEFAULT NULL,
  `Rate` decimal(9,2) DEFAULT NULL,
  `MaxRisk` decimal(9,2) DEFAULT NULL,
  PRIMARY KEY (`ClientsMarketingExpID`,`BranchID`),
  KEY `VisitID_BranchID` (`VisitID`,`BranchID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

----------

CREATE TABLE `visits` (
  `VisitID` int(11) NOT NULL DEFAULT '0',
  `BranchID` int(11) NOT NULL DEFAULT '0',
  `ClientID` int(11) DEFAULT NULL,
  `Group` varchar(10) DEFAULT NULL,
  `ClientType` varchar(10) DEFAULT NULL,
  `ClientSize` varchar(10) DEFAULT NULL,
  `VisitType` varchar(1) DEFAULT NULL,
  `VisitIN` datetime DEFAULT NULL,
  `VisitOUT` datetime DEFAULT NULL,
  `Balance` decimal(9,2) DEFAULT NULL,
  `Automat` varchar(200) DEFAULT NULL,
  `MarketingSum` decimal(9,2) DEFAULT NULL,
  `MarketingNotes` varchar(250) DEFAULT NULL,
  `ChangeTime` datetime DEFAULT NULL,
  `VersionID` int(11) DEFAULT NULL,
  `UserID` varchar(20) DEFAULT NULL,
  `UserZales` varchar(50) DEFAULT NULL,
  `Is2ndVisit` tinyint(1) DEFAULT NULL,
  `IsTypicalClient` tinyint(1) DEFAULT NULL,
  `Rate` decimal(9,2) DEFAULT NULL,
  `MaxRisk` decimal(9,2) DEFAULT NULL,
  PRIMARY KEY (`VisitID`,`BranchID`),
  KEY `VisitIN` (`VisitIN`),
  KEY `VisitIN_ClientID_BranchID` (`VisitIN`,`ClientID`,`BranchID`),
  KEY `ClientID_BranchID` (`ClientID`,`BranchID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
...
Рейтинг: 0 / 0
9 сообщений из 59, страница 3 из 3
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Медленно работает запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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