powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / тюнинг запроса
11 сообщений из 11, страница 1 из 1
тюнинг запроса
    #39102220
beginner_silent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйтса. Можно ли как-то ускорить такой запрос:

Код: 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.
# Query 1: 0.35 QPS, 3.23x concurrency, ID 0x4E3DA202FE28609F at byte 94967961
# This item is included in the report because it matches --limit.
# Scores: V/M = 38.86
# Time range: 2015-11-12 02:39:35 to 16:06:20
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          6   16809
# Exec time     53 156547s    33us    181s      9s     47s     19s   253ms
# Lock time     44  35122s       0     87s      2s     16s      8s   167us
# Rows sent     38 857.89k       0     101   52.26   49.17   12.04   49.17
# Rows examine  43   2.11G       0   1.29M 131.72k   1.09M 315.84k   2.76k
# Rows affecte   0       0       0       0       0       0       0       0
# Bytes sent    43 599.71M       0 379.10k  36.53k  59.57k  12.55k  33.17k
# Merge passes   0       0       0       0       0       0       0       0
# Tmp tables    33  29.69k       0       3    2.09    2.90    0.35    1.96
# Tmp disk tbl  54  29.69k       0       3    2.09    2.90    0.35    1.96
# Tmp tbl size  38  22.36G       0  62.77M   1.57M   4.93M   7.25M  34.83k
# Query size    23  12.54M     780     786  782.41  755.64       0  755.64
# Boolean:
# Filesort      99% yes,   0% no
# Full scan     99% yes,   0% no
# QC Hit         0% yes,  99% no
# Tmp table     99% yes,   0% no
# Tmp table on  99% yes,   0% no
# String:
# Databases    test1
# Hosts        127.0.0.1
# Last errno   0 (16681/99%), 1160 (72/0%), 1030 (35/0%)... 2 more
# Users        test1
# Query_time distribution
#   1us
#  10us  #
# 100us  #
#   1ms  #
#  10ms  ################################################################
# 100ms  ###########################################################
#    1s  #######################
#  10s+  ####################################################
# Tables
#    SHOW TABLE STATUS FROM `test1` LIKE 'posts'\G
#    SHOW CREATE TABLE `test1`.`posts`\G
#    SHOW TABLE STATUS FROM `test1` LIKE 'niche_posts'\G
#    SHOW CREATE TABLE `test1`.`niche_posts`\G
#    SHOW TABLE STATUS FROM `test1` LIKE 'images'\G
#    SHOW CREATE TABLE `test1`.`images`\G
#    SHOW TABLE STATUS FROM `test1` LIKE 'videos'\G
#    SHOW CREATE TABLE `test1`.`videos`\G
# EXPLAIN /*!50100 PARTITIONS*/
select  p1.*, i.id as iid, i.image_name AS iname, v.id as vid, v.video_name as vname, v.cover_name as vcover from (
                SELECT
                    p.id as pid, p.title as ptitle, p.location as plocation, p.map as pmap, p.age as page,
                    p.createdon as pcreatedon, p.phone as phone, p.sponsor as sponsored, p.body as pbody

                FROM  posts p
                INNER JOIN niche_posts np ON np.posts_id = p.id AND np.niche_id = 19
                WHERE p.city_id = 7  AND p.show = 1
                    ORDER  BY p.createdon DESC LIMIT 51 OFFSET 150) as p1
                LEFT JOIN images i ON  i.posts_id = p1.pid
                LEFT JOIN videos v ON  v.posts_id = p1.pid  GROUP  BY p1.pid  ORDER  BY p1.pcreatedon DESC\G

+----+-------------+------------+------------+--------+-----------------------------------+-----------------+---------+----------------------------------+--------+---------------------------------+
| id | select_type | table      | partitions | type   | possible_keys                     | key             | key_len | ref                              | rows   | Extra                           |
+----+-------------+------------+------------+--------+-----------------------------------+-----------------+---------+----------------------------------+--------+---------------------------------+
|  1 | PRIMARY     | <derived2> | NULL       | ALL    | NULL                              | NULL            | NULL    | NULL                             |    201 | Using temporary; Using filesort |
|  1 | PRIMARY     | i          | NULL       | ref    | posts_id                          | posts_id        | 4       | p1.pid                           |      6 | NULL                            |
|  1 | PRIMARY     | v          | NULL       | ref    | videos_posts_id                   | videos_posts_id | 4       | p1.pid                           |      1 | NULL                            |
|  2 | DERIVED     | np         | NULL       | ref    | PRIMARY,niche_id,posts_id         | niche_id        | 1       | const                            | 622786 | Using temporary; Using filesort |
|  2 | DERIVED     | p          | NULL       | eq_ref | PRIMARY,city_id_source_createdonn | PRIMARY         | 4       | test1.np.posts_id                |      1 | Using where                     |
+----+-------------+------------+------------+--------+-----------------------------------+-----------------+---------+----------------------------------+--------+---------------------------------+
5 rows in set (0.01 sec)
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102247
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginner_silent
Код: sql
1.
i.id as iid, i.image_name AS iname, v.id as vid, v.video_name as vname, v.cover_name as vcover

Вы в курсе, что после GROUP BY p1.pid в этих полях может быть совсем не то, что нужно?
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102266
begginer_silent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

к сожалению не знаю - запрос не мой .
Но на экран он выдает что-то нормальное, содержание похоже на название столбцов.
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102271
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
begginer_silentНо на экран он выдает что-то нормальное, содержание похоже на название столбцов.Содержание-то будет похоже, столбцы будут правильные. А вот записи - не факт.

Текст запроса вы можете править?
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102302
beginner_silent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

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

И какова роль таблицы niche_posts в этом запросе?
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102314
begginer_silent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Код: sql
1.
2.
3.
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Exec time     53 156547s    33us    181s      9s     47s     19s   253ms



в среднем сейчас порядка 40 секунд.

Вообще меня смущает разброс по времени min 33us, max - 181 sec

но там OFFSET может быть разный - возможно что время от этого зависит.

Хотелось бы в пределах 10 секунд.

Про niche_posts пока не могу сказать, сейчас попробую разобраться.
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102320
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
begginer_silentВообще меня смущает разброс по времени min 33us, max - 181 sec33 мкс - это, наверное, кэш результатов запросов срабатывает.
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102322
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
posts и niche_posts - это вообще таблицы? не VIEW?
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102325
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftposts и niche_posts - это вообще таблицы? не VIEW?Наверное, ерунду спросил.
Но, на всякий случай, покажите SHOW CREATE TABLE для них.
...
Рейтинг: 0 / 0
тюнинг запроса
    #39102364
beginer_silent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Код: 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.
| posts | CREATE TABLE `posts` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(250) CHARACTER SET utf8 NOT NULL,
  `safe_title` varchar(250) COLLATE utf8_bin NOT NULL,
  `age` tinyint(3) unsigned NOT NULL,
  `location` varchar(100) COLLATE utf8_bin NOT NULL,
  `phone` varchar(100) COLLATE utf8_bin NOT NULL,
  `body` mediumtext CHARACTER SET utf8 NOT NULL,
  `createdon` int(10) unsigned NOT NULL,
  `source` tinyint(3) unsigned NOT NULL,
  `link` varchar(1024) COLLATE utf8_bin NOT NULL,
  `city_id` int(11) NOT NULL,
  `haspic` tinyint(1) NOT NULL,
  `show` tinyint(1) NOT NULL,
  `sponsor` tinyint(1) NOT NULL DEFAULT '0',
  `createdsys` double DEFAULT NULL,
  `reply` tinyint(1) NOT NULL DEFAULT '0',
  `complete` tinyint(1) NOT NULL DEFAULT '0',
  `repost` tinyint(1) NOT NULL DEFAULT '0',
  `internal` tinyint(1) NOT NULL DEFAULT '0',
  `views` int(10) unsigned NOT NULL DEFAULT '0',
  `map` char(32) COLLATE utf8_bin DEFAULT NULL,
  `escort_id` int(10) DEFAULT NULL,
  `repost_days` int(2) DEFAULT NULL,
  `repost_times` varchar(128) COLLATE utf8_bin DEFAULT NULL,
  `public_time` int(10) DEFAULT NULL,
  `published_times` int(2) DEFAULT '0',
  `need_publish` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `createdsys` (`createdsys`),
  KEY `city_id_source_createdon` (`city_id`,`source`,`createdon`),
  KEY `id_city_id` (`id`,`city_id`),
  KEY `indx_escort_id` (`escort_id`),
  KEY `city_id_show_createdon` (`city_id`,`show`,`createdon`),
  KEY `indx_city_id_show_id_createdon` (`city_id`,`show`,`id`,`createdon`),
  KEY `indx_city_id_source_show_id_createdon` (`city_id`,`source`,`show`,`id`,`createdon`)
) ENGINE=MyISAM AUTO_INCREMENT=10294501 DEFAULT CHARSET=utf8 COLLATE=utf8_bin |



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 SHOW CREATE TABLE niche_posts;
+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table       | Create Table                                                                                                                                                                                                                                             |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| niche_posts | CREATE TABLE `niche_posts` (
  `niche_id` tinyint(3) unsigned NOT NULL,
  `posts_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`posts_id`,`niche_id`),
  KEY `niche_id` (`niche_id`),
  KEY `posts_id` (`posts_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / тюнинг запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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