Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Добиться ускорение сортировки в запросе / 12 сообщений из 12, страница 1 из 1
11.07.2014, 13:01:08
    #38694241
silvio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
Добрый день всем!
Помогите пожалуйста с оптимизацией "не трогая запрос"

Есть таблицы (да, да, не пинайте -это Битрикс :):

b_iblock - 48 записей
b_lang - 1 запись
b_iblock_element - 2 783 951 записи
b_iblock_element_prop_s28 - 41000 записей
b_iblock_section_element - 3 196 984 записей
b_iblock_section - 607 записей
b_iblock_site - 48 записей

Код: 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.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
CREATE TABLE IF NOT EXISTS `b_iblock` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `IBLOCK_TYPE_ID` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `LID` char(2) COLLATE utf8_unicode_ci NOT NULL,
  `CODE` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `NAME` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `SORT` int(11) NOT NULL DEFAULT '500',
  `LIST_PAGE_URL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `DETAIL_PAGE_URL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `SECTION_PAGE_URL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PICTURE` int(18) DEFAULT NULL,
  `DESCRIPTION` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_TYPE` char(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',
  `RSS_TTL` int(11) NOT NULL DEFAULT '24',
  `RSS_ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `RSS_FILE_ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `RSS_FILE_LIMIT` int(11) DEFAULT NULL,
  `RSS_FILE_DAYS` int(11) DEFAULT NULL,
  `RSS_YANDEX_ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `XML_ID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
  `INDEX_ELEMENT` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `INDEX_SECTION` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `WORKFLOW` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `SECTION_CHOOSER` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `VERSION` int(11) NOT NULL DEFAULT '1',
  `LAST_CONV_ELEMENT` int(11) NOT NULL DEFAULT '0',
  `EDIT_FILE_BEFORE` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `EDIT_FILE_AFTER` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `SECTIONS_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `SECTION_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `ELEMENTS_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `ELEMENT_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `BIZPROC` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `LIST_MODE` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `SOCNET_GROUP_ID` int(18) DEFAULT NULL,
  `RIGHTS_MODE` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `SECTION_PROPERTY` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`ID`),
  KEY `ix_iblock` (`IBLOCK_TYPE_ID`,`LID`,`ACTIVE`),
  KEY `ix_perf_b_iblock_1` (`LID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=103 ;



CREATE TABLE IF NOT EXISTS `b_iblock_element` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `TIMESTAMP_X` datetime DEFAULT NULL,
  `MODIFIED_BY` int(18) DEFAULT NULL,
  `DATE_CREATE` datetime DEFAULT NULL,
  `CREATED_BY` int(18) DEFAULT NULL,
  `IBLOCK_ID` int(11) NOT NULL DEFAULT '0',
  `IBLOCK_SECTION_ID` int(11) DEFAULT NULL,
  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `ACTIVE_FROM` datetime DEFAULT NULL,
  `ACTIVE_TO` datetime DEFAULT NULL,
  `SORT` int(11) NOT NULL DEFAULT '500',
  `NAME` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `PREVIEW_PICTURE` int(18) DEFAULT NULL,
  `PREVIEW_TEXT` text COLLATE utf8_unicode_ci,
  `PREVIEW_TEXT_TYPE` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',
  `DETAIL_PICTURE` int(18) DEFAULT NULL,
  `DETAIL_TEXT` longtext COLLATE utf8_unicode_ci,
  `DETAIL_TEXT_TYPE` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',
  `SEARCHABLE_CONTENT` text COLLATE utf8_unicode_ci,
  `WF_STATUS_ID` int(18) DEFAULT '1',
  `WF_PARENT_ELEMENT_ID` int(11) DEFAULT NULL,
  `WF_NEW` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `WF_LOCKED_BY` int(18) DEFAULT NULL,
  `WF_DATE_LOCK` datetime DEFAULT NULL,
  `WF_COMMENTS` text COLLATE utf8_unicode_ci,
  `IN_SECTIONS` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `XML_ID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `CODE` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `TAGS` varchar(1023) COLLATE utf8_unicode_ci DEFAULT NULL,
  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
  `WF_LAST_HISTORY_ID` int(11) DEFAULT NULL,
  `SHOW_COUNTER` int(18) DEFAULT NULL,
  `SHOW_COUNTER_START` datetime DEFAULT NULL,
  PRIMARY KEY (`ID`),
  KEY `ix_iblock_element_1` (`IBLOCK_ID`,`IBLOCK_SECTION_ID`),
  KEY `ix_iblock_element_4` (`IBLOCK_ID`,`XML_ID`,`WF_PARENT_ELEMENT_ID`),
  KEY `ix_iblock_element_3` (`WF_PARENT_ELEMENT_ID`),
  KEY `ix_iblock_element_code` (`IBLOCK_ID`,`CODE`),
  KEY `ix_perf_b_iblock_element_1` (`WF_STATUS_ID`),
  KEY `IBLOCK_ID` (`IBLOCK_ID`),
  KEY `XML_ID` (`XML_ID`),
  KEY `ACTIVE` (`ACTIVE`),
  KEY `SORT` (`SORT`),
  KEY `IN_SECTIONS` (`IN_SECTIONS`),
  KEY `TMP_ID` (`TMP_ID`),
  KEY `bbd_custom_index` (`IBLOCK_ID`,`ACTIVE`,`WF_PARENT_ELEMENT_ID`,`WF_STATUS_ID`),
  KEY `quicksrt` (`ID`,`IBLOCK_ID`,`PREVIEW_PICTURE`,`SORT`),
  KEY `qsrt2` (`IBLOCK_ID`,`ACTIVE`,`WF_STATUS_ID`,`WF_PARENT_ELEMENT_ID`,`SORT`),
  KEY `qsrt3` (`ID`,`IBLOCK_ID`,`ACTIVE`,`WF_STATUS_ID`,`WF_PARENT_ELEMENT_ID`,`SORT`),
  KEY `qsrt4` (`ID`,`SORT`),
  KEY `qsrt5` (`IBLOCK_ID`,`ID`,`SORT`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4172008 ;

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

--
-- Table structure for table `b_iblock_element_prop_s28`
--

CREATE TABLE IF NOT EXISTS `b_iblock_element_prop_s28` (
  `IBLOCK_ELEMENT_ID` int(11) NOT NULL,
  `PROPERTY_100` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_100` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_102` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_102` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_103` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_103` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_104` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_104` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_105` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_105` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_106` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_106` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_107` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_107` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_115` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_115` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_116` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_116` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_118` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_118` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_119` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_119` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_142` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_142` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_143` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_143` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_146` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_146` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_162` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_162` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_163` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_163` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_164` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_164` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_165` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_165` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_167` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_167` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_169` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_169` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_174` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_174` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_175` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_175` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_190` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_190` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_191` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_191` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_192` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_192` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_193` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_193` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_194` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_194` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_195` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_195` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_196` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_196` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_207` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_207` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_208` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_208` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_220` int(11) DEFAULT NULL,
  `DESCRIPTION_220` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_226` int(11) DEFAULT NULL,
  `DESCRIPTION_226` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_240` int(11) DEFAULT NULL,
  `DESCRIPTION_240` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_284` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_284` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_285` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_285` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_289` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_289` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_290` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_290` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_307` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_307` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_308` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_308` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_309` int(11) DEFAULT NULL,
  `DESCRIPTION_309` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_310` int(11) DEFAULT NULL,
  `DESCRIPTION_310` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_314` int(11) DEFAULT NULL,
  `DESCRIPTION_314` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_315` int(11) DEFAULT NULL,
  `DESCRIPTION_315` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_321` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_321` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_339` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_339` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_340` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_340` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_341` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_341` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_363` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_363` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_364` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_364` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_365` int(11) DEFAULT NULL,
  `DESCRIPTION_365` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_398` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_398` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_442` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_442` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_473` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_473` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_474` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_474` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_483` int(11) DEFAULT NULL,
  `DESCRIPTION_483` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_486` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_486` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_488` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_488` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_493` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_493` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_494` int(11) DEFAULT NULL,
  `DESCRIPTION_494` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_496` int(11) DEFAULT NULL,
  `DESCRIPTION_496` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_633` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_633` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_634` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_634` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_635` int(11) DEFAULT NULL,
  `DESCRIPTION_635` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_636` int(11) DEFAULT NULL,
  `DESCRIPTION_636` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_637` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_637` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_641` int(11) DEFAULT NULL,
  `DESCRIPTION_641` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_642` int(11) DEFAULT NULL,
  `DESCRIPTION_642` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_643` int(11) DEFAULT NULL,
  `DESCRIPTION_643` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_644` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_644` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_645` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_645` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_646` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_646` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_661` int(11) DEFAULT NULL,
  `DESCRIPTION_661` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_666` longtext COLLATE utf8_unicode_ci,
  `DESCRIPTION_666` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_675` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_675` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_676` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_676` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_677` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_677` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_678` longtext COLLATE utf8_unicode_ci,
  `DESCRIPTION_678` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_679` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_679` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_680` int(11) DEFAULT NULL,
  `DESCRIPTION_680` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_681` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_681` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_682` longtext COLLATE utf8_unicode_ci,
  `DESCRIPTION_682` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_683` longtext COLLATE utf8_unicode_ci,
  `DESCRIPTION_683` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_684` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_684` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_686` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_686` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_687` decimal(18,4) DEFAULT NULL,
  `DESCRIPTION_687` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `PROPERTY_688` int(11) DEFAULT NULL,
  `DESCRIPTION_688` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`IBLOCK_ELEMENT_ID`),
  KEY `ix_perf_b_iblock_element_pr_1` (`PROPERTY_309`),
  KEY `PROPERTY_290` (`PROPERTY_290`),
  KEY `DESCRIPTION_284` (`DESCRIPTION_284`),
  KEY `PROPERTY_104` (`PROPERTY_104`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

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

--
-- Table structure for table `b_iblock_section`
--

CREATE TABLE IF NOT EXISTS `b_iblock_section` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `MODIFIED_BY` int(18) DEFAULT NULL,
  `DATE_CREATE` datetime DEFAULT NULL,
  `CREATED_BY` int(18) DEFAULT NULL,
  `IBLOCK_ID` int(11) NOT NULL,
  `IBLOCK_SECTION_ID` int(11) DEFAULT NULL,
  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `GLOBAL_ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `SORT` int(11) NOT NULL DEFAULT '500',
  `NAME` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `PICTURE` int(18) DEFAULT NULL,
  `LEFT_MARGIN` int(18) DEFAULT NULL,
  `RIGHT_MARGIN` int(18) DEFAULT NULL,
  `DEPTH_LEVEL` int(18) DEFAULT NULL,
  `DESCRIPTION` text COLLATE utf8_unicode_ci,
  `DESCRIPTION_TYPE` char(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',
  `SEARCHABLE_CONTENT` text COLLATE utf8_unicode_ci,
  `CODE` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `XML_ID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
  `DETAIL_PICTURE` int(18) DEFAULT NULL,
  `SOCNET_GROUP_ID` int(18) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  KEY `ix_iblock_section_1` (`IBLOCK_ID`,`IBLOCK_SECTION_ID`),
  KEY `ix_iblock_section_depth_level` (`IBLOCK_ID`,`DEPTH_LEVEL`),
  KEY `ix_iblock_section_left_margin` (`IBLOCK_ID`,`LEFT_MARGIN`,`RIGHT_MARGIN`),
  KEY `ix_iblock_section_right_margin` (`IBLOCK_ID`,`RIGHT_MARGIN`,`LEFT_MARGIN`),
  KEY `ix_iblock_section_code` (`IBLOCK_ID`,`CODE`),
  KEY `CODE` (`CODE`),
  KEY `XML_ID` (`XML_ID`),
  KEY `TMP_ID` (`TMP_ID`),
  KEY `ACTIVE` (`ACTIVE`),
  KEY `GLOBAL_ACTIVE` (`GLOBAL_ACTIVE`),
  KEY `IBLOCK_ID` (`IBLOCK_ID`),
  KEY `IBLOCK_SECTION_ID` (`IBLOCK_SECTION_ID`),
  KEY `LEFT_MARGIN` (`LEFT_MARGIN`),
  KEY `RIGHT_MARGIN` (`RIGHT_MARGIN`),
  KEY `DEPTH_LEVEL` (`DEPTH_LEVEL`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2610 ;

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

--
-- Table structure for table `b_iblock_section_element`
--

CREATE TABLE IF NOT EXISTS `b_iblock_section_element` (
  `IBLOCK_SECTION_ID` int(11) NOT NULL,
  `IBLOCK_ELEMENT_ID` int(11) NOT NULL,
  `ADDITIONAL_PROPERTY_ID` int(18) DEFAULT NULL,
  UNIQUE KEY `ux_iblock_section_element` (`IBLOCK_SECTION_ID`,`IBLOCK_ELEMENT_ID`,`ADDITIONAL_PROPERTY_ID`),
  KEY `UX_IBLOCK_SECTION_ELEMENT2` (`IBLOCK_ELEMENT_ID`),
  KEY `IBLOCK_SECTION_ID` (`IBLOCK_SECTION_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

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

--
-- Table structure for table `b_iblock_site`
--

CREATE TABLE IF NOT EXISTS `b_iblock_site` (
  `IBLOCK_ID` int(18) NOT NULL,
  `SITE_ID` char(2) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`IBLOCK_ID`,`SITE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

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

--
-- Table structure for table `b_lang`
--

CREATE TABLE IF NOT EXISTS `b_lang` (
  `LID` char(2) COLLATE utf8_unicode_ci NOT NULL,
  `SORT` int(18) NOT NULL DEFAULT '100',
  `DEF` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',
  `NAME` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `DIR` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `FORMAT_DATE` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `FORMAT_DATETIME` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `CHARSET` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `LANGUAGE_ID` char(2) COLLATE utf8_unicode_ci NOT NULL,
  `DOC_ROOT` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `DOMAIN_LIMITED` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `SERVER_NAME` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `SITE_NAME` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `EMAIL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `WEEK_START` int(11) DEFAULT NULL,
  `FORMAT_NAME` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `CULTURE_ID` int(11) DEFAULT NULL,
  PRIMARY KEY (`LID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;




Есть запрос
Код: 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.
SELECT SQL_NO_CACHE  BE.ID as ID,BE.NAME as NAME,BE.IBLOCK_ID as IBLOCK_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,BE.PREVIEW_PICTURE as PREVIEW_PICTURE, FPS0.PROPERTY_191 as PROPERTY_CML2_ARTICLE_VALUE, FPS0.DESCRIPTION_191 as PROPERTY_CML2_ARTICLE_DESCRIPTION, concat(BE.ID , ':' , 191) as PROPERTY_CML2_ARTICLE_VALUE_ID, FPS0.PROPERTY_164 as PROPERTY_BBD_OLD_PRICE_VALUE, FPS0.DESCRIPTION_164 as PROPERTY_BBD_OLD_PRICE_DESCRIPTION, concat(BE.ID , ':' , 164) as PROPERTY_BBD_OLD_PRICE_VALUE_ID,L.DIR as LANG_DIR, FPS0.PROPERTY_284 as PROPERTY_AVAILABLE_VALUE, FPS0.DESCRIPTION_284 as PROPERTY_AVAILABLE_DESCRIPTION, concat(BE.ID , ':' , 284) as PROPERTY_AVAILABLE_VALUE_ID, FPS0.PROPERTY_634 as PROPERTY_STORE_AVAILABLE_VALUE, FPS0.DESCRIPTION_634 as PROPERTY_STORE_AVAILABLE_DESCRIPTION, concat(BE.ID , ':' , 634) as PROPERTY_STORE_AVAILABLE_VALUE_ID, FPS0.PROPERTY_442 as PROPERTY_DISTR_SHIPMENT_CODE_VALUE, FPS0.DESCRIPTION_442 as PROPERTY_DISTR_SHIPMENT_CODE_DESCRIPTION, concat(BE.ID , ':' , 442) as PROPERTY_DISTR_SHIPMENT_CODE_VALUE_ID, FPS0.PROPERTY_364 as PROPERTY_BBD_CNT_ORDERS_VALUE, FPS0.DESCRIPTION_364 as PROPERTY_BBD_CNT_ORDERS_DESCRIPTION, concat(BE.ID , ':' , 364) as PROPERTY_BBD_CNT_ORDERS_VALUE_ID,BE.SORT as SORT,BE.CODE as CODE,BE.XML_ID as EXTERNAL_ID,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.XML_ID as IBLOCK_EXTERNAL_ID,B.LID as LID 
            FROM 
            b_iblock B
            INNER JOIN b_lang L ON B.LID=L.LID
            INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
            INNER JOIN b_iblock_element_prop_s28 FPS0 ON FPS0.IBLOCK_ELEMENT_ID = BE.ID
             INNER JOIN (
                    SELECT DISTINCT BSE.IBLOCK_ELEMENT_ID
                    FROM b_iblock_section_element BSE

                    INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID

                    WHERE ((BS.ID IN (180, 1452, 1491, 1481, 1519, 1521, 1523, 1520, 2321, 1524, 1522, 1469, 2445, 2446, 2447, 2471, 1472, 1483, 1476, 2470, 1474, 1473, 1475, 1470, 1471, 2467, 2442, 2468, 2440, 1809, 2443, 2441, 2444, 2469, 2466, 1929, 1930, 2325, 1477, 1478, 1480, 1479, 1490, 1482, 1484, 1485, 310, 1488, 1486, 1487, 1525, 1526, 1963)))
                    ) BES ON BES.IBLOCK_ELEMENT_ID = BE.ID

            WHERE 1=1 
            AND (

                ((((BE.IBLOCK_ID = '28'))))
                AND (EXISTS (
                        SELECT IBLOCK_ID FROM b_iblock_site WHERE IBLOCK_ID = B.ID
                        AND (((SITE_ID='s2')))
                    ))
                AND ((((BE.ACTIVE='Y'))))
                AND ((((FPS0.PROPERTY_285 = '1'))))
                AND ((( FPS0.PROPERTY_220 IS NULL OR NOT (FPS0.PROPERTY_220 = '84'))))
            )
            AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))

         ORDER BY BE.SORT



Результат запроса - около 2400 строк.

Так вот если выполнять без сортировки (ORDER BY) - запрос выполняется за 0.01 сек.

EXPLAIN:



Если же есть сортировка по полю b_iblock_element.SORT- запрос выполняется в 10 раз дольше - около 0.11 сек.
EXPLAIN:


Можно ли как нибудь не трогая сам запрос, а создавая/модифицируя только индексы добиться того чтобы на сортировку не тратился ещё один проход по набору данных.
...
Рейтинг: 0 / 0
11.07.2014, 13:49:29
    #38694320
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
ну сделай индексов нужных. Using filesort не о чем не говорит?
...
Рейтинг: 0 / 0
11.07.2014, 15:19:41
    #38694466
silvio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
ScareCrow,

Я пытался:

KEY `qsrt2` (`IBLOCK_ID`,`ACTIVE`,`WF_STATUS_ID`,`WF_PARENT_ELEMENT_ID`,`SORT`),
KEY `qsrt3` (`ID`,`IBLOCK_ID`,`ACTIVE`,`WF_STATUS_ID`,`WF_PARENT_ELEMENT_ID`,`SORT`),
KEY `qsrt4` (`ID`,`SORT`),
KEY `qsrt5` (`IBLOCK_ID`,`ID`,`SORT`)

В том числе и через FORCE INDEX

Но не помогло.
Поэтому и прошу помощи у сообщества.
...
Рейтинг: 0 / 0
11.07.2014, 16:10:09
    #38694551
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
авторBE.SORT

пробовал?
...
Рейтинг: 0 / 0
11.07.2014, 16:20:29
    #38694568
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
ScareCrowавторBE.SORT

пробовал?Не поможет. Там масса других полей используется для соединения таблиц и фильтрации записей. Имело бы шанс помочь, если бы выбирались все или почти все записи из таблицы b_iblock_element. Но выбирается, как я понял, меньше, чем 1/1000-ая.
...
Рейтинг: 0 / 0
11.07.2014, 16:23:10
    #38694572
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
miksoftScareCrowпропущено...


пробовал?Не поможет. Там масса других полей используется для соединения таблиц и фильтрации записей. Имело бы шанс помочь, если бы выбирались все или почти все записи из таблицы b_iblock_element. Но выбирается, как я понял, меньше, чем 1/1000-ая.

тогда сначала выбирать ID, сортировать, а потом джойнить.
...
Рейтинг: 0 / 0
11.07.2014, 16:29:34
    #38694581
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
ScareCrowтогда сначала выбирать ID, сортировать, а потом джойнить.Так запрос-то изменить нельзя.

Можно попытаться собрать покрывающий индекс, состоящий сначала из полей для фильтрации, потом поле SORT, потом остальные поля для выборки. Но тоже сомнительно, что поможет. Да и индекс будет огромным, при ограниченных ресурсах выйдет только хуже.
...
Рейтинг: 0 / 0
11.07.2014, 17:08:17
    #38694630
silvio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
ScareCrowавторBE.SORT

пробовал?

Такой индекс изначально есть в b_iblock_element
KEY `SORT` (`SORT`),

А если бы можно было незначительно менять сам запрос - чтобы можете посоветовать?
...
Рейтинг: 0 / 0
11.07.2014, 17:12:04
    #38694635
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
silvio,

Кстати, попробуйте провести оптимизацию таблиц. Можно через интерфейс Битрикса, а можно и без него, неважно.

И посмотрите на страницу /bitrix/admin/perfmon_db_server.php?lang=ru на вашем сайте. Возможно, там будут полезные подсказки.
...
Рейтинг: 0 / 0
11.07.2014, 17:15:41
    #38694639
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
Еще возможные варианты:
а) Увеличить параметры tmp_table_size и max_heap_table_size. Менять их лучше в паре и чтобы они были равны друг другу.
б) Увеличить sort_buffer_size.
...
Рейтинг: 0 / 0
11.07.2014, 18:41:15
    #38694720
silvio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
miksoftКстати, попробуйте провести оптимизацию таблиц. Можно через интерфейс Битрикса, а можно и без него, неважно.

И посмотрите на страницу /bitrix/admin/perfmon_db_server.php?lang=ru на вашем сайте. Возможно, там будут полезные подсказки.


Ругается на query_cache_size, говорит слишком большой - 512 mb
Процент временных таблиц потребовавших создание на диске тоже довольно высок - 32%, но я думаю что тут особенность битрикса.
Ругается на "Кеш открытых таблиц" - всего 1.81% эффективность, рекомендует увеличить значение параметра table_open_cache (текущее значение: 320000) - попробуем.

miksoftЕще возможные варианты:
а) Увеличить параметры tmp_table_size и max_heap_table_size. Менять их лучше в паре и чтобы они были равны друг другу.
б) Увеличить sort_buffer_size.

С железом вряд ли проблема
Сервер БД довольно мощный (XEON, 64 гб памяти), отдельно от apache/nginx (связан гигабитной сетью)
По мониторингу - редко бывает загружен больше 30%, память используется процентов на 40.

tmp_table_size и max_heap_table_size - по 2 гб (попробую увеличить, отпишусь)
sort_buffer_size = 64 mb (тоже попробую увеличить, отпишусь)

В целом на буффер подключений выделено 160 мб, коннекшенов 200
Под глобальные буферы (key_buffer_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + query_cache_size) - 25.58 ГБ
...
Рейтинг: 0 / 0
12.07.2014, 16:21:03
    #38695019
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добиться ускорение сортировки в запросе
silvioРугается на query_cache_size, говорит слишком большой - 512 mbТут нужно смотреть. Его желательно слишком большим не делать. Посмотрите на его эффективность при размерах 64, 128, 256 и 512 Мбайт. С каждым поживите хотя бы по дню-неделе. И оставьте тот, выше которого эффективность уже почти не растет.
silviotmp_table_size и max_heap_table_size - по 2 гб (попробую увеличить, отпишусь)Это большие значения. Для текущей задачи увеличивать смысла не вижу.
silviosort_buffer_size = 64 mb (тоже попробую увеличить, отпишусь)Попробуйте, но не слишком сильно, раз в полтора-два. Если заметных улучшений не будет, то оставьте как сейчас.
silvioРугается на "Кеш открытых таблиц" - всего 1.81% эффективность, рекомендует увеличить значение параметра table_open_cache (текущее значение: 320000) - попробуем.С одной стороны 320000 - это уже очень много. С другой стороны 1.81% - маловато. Проверьте, какой лимит на количество открытых файлов на уровне ОС, возможно, увеличивать нужно его.
silvioотдельно от apache/nginx (связан гигабитной сетью)Это, кстати, не очень хорошо по сравнению с сокетным соединением. Но как сделано, так сделано.

Где физически размещен /tmp ? Насколько большая активность MySQL по создание там временных файлов (хотя бы "на глаз")?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Добиться ускорение сортировки в запросе / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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