powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Слишком долгое выполнение запроса
5 сообщений из 5, страница 1 из 1
Слишком долгое выполнение запроса
    #39041034
split_ozma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отображение строк 0 - 24 1510 всего, Запрос занял 0.3212 сек.
Что получается очень долго. Добавив пару индексов я сократил время на 0.2 секунды
Но все же это очень долго. Помогите как упростить запрос не могу или более грамотно его собрать. Результаты explain тоже приложил. Может такие запросы нужно кэшировать. Просто пока не до конца догоняю, как исправить ситуацию


Код: 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.
SELECT 
	plitka_tovar.Kollekciya, 
	plitka_tovar.img, 
	interior_goods.link 
FROM 
	plitka_tovar, 
	_article, 
	interior_point, 
	interior_goods 
WHERE 
	plitka_tovar.id IN (
		SELECT 
			id_product 
		FROM 
			`kuzia-kac_forms`.plitka_tovar_oblasty_primeneniya 
		WHERE 
			id_cut IN(
				SELECT 
					id_cut 
				FROM 
					`kuzia-kac_forms`.plitka_category_oblasty_primeneniya 
				WHERE 
					id_product = '6'
			)
	) 
	AND _article.id_part = '18' 
	AND _article.id_product = plitka_tovar.id 
	AND interior_point.id = _article.id 
	AND interior_goods.id = interior_point.id_goods





Код: 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.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
CREATE TABLE IF NOT EXISTS `interior_goods` (
  `id` int(11) NOT NULL,
  `id_part` int(11) NOT NULL,
  `name` varchar(60) NOT NULL,
  `link` varchar(60) NOT NULL,
  `tags` varchar(3000) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `interior_point`
--

CREATE TABLE IF NOT EXISTS `interior_point` (
  `id` int(11) NOT NULL,
  `id_goods` int(11) NOT NULL,
  `article` int(11) NOT NULL,
  `posx` varchar(15) NOT NULL,
  `posy` varchar(15) NOT NULL,
  `point_part` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `plitka_kollekciya`
--

CREATE TABLE IF NOT EXISTS `plitka_kollekciya` (
  `id` int(11) NOT NULL,
  `Fabrika` int(11) NOT NULL,
  `Nazvanie` varchar(60) NOT NULL,
  `Polnoe_nazvanie` varchar(100) NOT NULL,
  `Opisanie` text NOT NULL,
  `pdf_fayl` varchar(60) NOT NULL,
  `Nomera_vizualizaciy` text NOT NULL,
  `title` varchar(500) NOT NULL,
  `description` varchar(500) NOT NULL,
  `keywords` varchar(500) NOT NULL,
  `divh1` varchar(500) NOT NULL,
  `tags` varchar(2000) NOT NULL,
  `Tehnicheskiy_keramogranit` varchar(3) NOT NULL,
  `out_of_production` set('Да','Нет') NOT NULL,
  `novelty` set('Да','Нет') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `plitka_tovar`
--

CREATE TABLE IF NOT EXISTS `plitka_tovar` (
  `id` int(11) NOT NULL,
  `Fabrika` int(11) NOT NULL,
  `Kollekciya` int(11) NOT NULL,
  `Nazvanie` varchar(100) NOT NULL,
  `Material` int(11) NOT NULL,
  `Poverhnosty` int(11) NOT NULL,
  `Stily` int(11) NOT NULL,
  `Tekstura` int(11) NOT NULL,
  `Tip` int(11) NOT NULL,
  `Vid_izdeliya` int(11) NOT NULL,
  `Kratnosty` varchar(30) NOT NULL,
  `S_Facetom(Kabanchik)` varchar(30) NOT NULL,
  `Tehnicheskiy_keramogranit` varchar(30) NOT NULL,
  `Tonkiy_keramogranit` varchar(30) NOT NULL,
  `title` varchar(500) NOT NULL,
  `description` varchar(500) NOT NULL,
  `keywords` varchar(500) NOT NULL,
  `divh1` varchar(500) NOT NULL,
  `tags` varchar(2000) NOT NULL,
  `size1` float NOT NULL,
  `size2` float NOT NULL,
  `size3` float NOT NULL,
  `img` varchar(120) NOT NULL,
  `f_sht` varchar(6) NOT NULL,
  `f_m2` varchar(6) NOT NULL,
  `f_kg` varchar(6) NOT NULL,
  `f_kor` varchar(6) NOT NULL,
  `f_kor_m2` varchar(6) NOT NULL,
  `sizeP1` varchar(5) NOT NULL,
  `sizeP2` varchar(5) NOT NULL,
  `sizeP3` varchar(5) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `plitka_tovar_oblasty_primeneniya`
--

CREATE TABLE IF NOT EXISTS `plitka_tovar_oblasty_primeneniya` (
  `id_cut` int(11) NOT NULL,
  `id_product` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `_article`
--

CREATE TABLE IF NOT EXISTS `_article` (
  `id` int(11) NOT NULL,
  `id_product` int(11) NOT NULL,
  `id_part` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `interior_goods`
--
ALTER TABLE `interior_goods`
  ADD PRIMARY KEY (`id`),
  ADD KEY `id` (`id`),
  ADD KEY `id_2` (`id`);

--
-- Индексы таблицы `interior_point`
--
ALTER TABLE `interior_point`
  ADD PRIMARY KEY (`id`),
  ADD KEY `article` (`article`);

--
-- Индексы таблицы `plitka_kollekciya`
--
ALTER TABLE `plitka_kollekciya`
  ADD PRIMARY KEY (`id`);

--
-- Индексы таблицы `plitka_tovar`
--
ALTER TABLE `plitka_tovar`
  ADD PRIMARY KEY (`id`),
  ADD KEY `id` (`id`);

--
-- Индексы таблицы `_article`
--
ALTER TABLE `_article`
  ADD PRIMARY KEY (`id`),
  ADD KEY `id` (`id`),
  ADD KEY `id_product` (`id_product`,`id_part`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `interior_goods`
--
ALTER TABLE `interior_goods`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `interior_point`
--
ALTER TABLE `interior_point`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `plitka_kollekciya`
--
ALTER TABLE `plitka_kollekciya`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `plitka_tovar`
--
ALTER TABLE `plitka_tovar`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `_article`
--
ALTER TABLE `_article`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
...
Рейтинг: 0 / 0
Слишком долгое выполнение запроса
    #39041072
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	plitka_tovar.id IN (
		SELECT 
			id_product 
		FROM 
			`kuzia-kac_forms`.plitka_tovar_oblasty_primeneniya 
		WHERE 
			id_cut IN(
				SELECT 
					id_cut 
				FROM 
					`kuzia-kac_forms`.plitka_category_oblasty_primeneniya 
				WHERE 
					id_product = '6'
			)
	) 

можно попробовать
Код: sql
1.
2.
3.
4.
5.
6.
7.
EXISTS (
  SELECT 1
  FROM `kuzia-kac_forms`.plitka_tovar_oblasty_primeneniya o
  JOIN `kuzia-kac_forms`.plitka_category_oblasty_primeneniya c
    ON c.id_cut = o.id_cut AND c.id_product = 6
  WHERE o.id_product=plitka_tovar.id
  ) 

IN ищет все записи по условию, EXISTS - до первой найденной (хотя про MySQL - я не уверен, но вроде бы должно тоже до первой найденной )
...
Рейтинг: 0 / 0
Слишком долгое выполнение запроса
    #39041124
split_ozma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,

Так Вообще не загрузилось, хех.
Как ни странно, написав тоже самое через where сработало в разы быстрее
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT 
	plitka_tovar.Kollekciya, 
	plitka_tovar.img, 
	interior_goods.link 
FROM 
	plitka_tovar, 
	_article, 
	interior_point, 
	interior_goods, 
	`kuzia-kac_forms`.plitka_tovar_oblasty_primeneniya as o, 
	`kuzia-kac_forms`.plitka_category_oblasty_primeneniya as c 
WHERE 
	c.id_cut = o.id_cut 
	AND c.id_product = 6 
	AND o.id_product = plitka_tovar.id 
	AND _article.id_part = '18' 
	AND _article.id_product = plitka_tovar.id 
	AND interior_point.id = _article.id 
	AND interior_goods.id = interior_point.id_goods
...
Рейтинг: 0 / 0
Слишком долгое выполнение запроса
    #39041138
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
split_ozma,

Какая у вас версия MySQL?
...
Рейтинг: 0 / 0
Слишком долгое выполнение запроса
    #39041365
split_ozma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, 5.6 !
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Слишком долгое выполнение запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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