powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / можно ли это упростить-оптимизировать?
7 сообщений из 7, страница 1 из 1
можно ли это упростить-оптимизировать?
    #38694346
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет!
есть громадный запрос
и вопрос по нему: можно ли его как-то упростить-соптимизировать?
Код: 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.
(SELECT
    wp_posts.ID AS 'id',
    wp_posts.post_title AS 'item',
    wp_posts.post_excerpt AS 'title',
    wp_terms.slug AS 'link',
    wp_posts.menu_order AS 'order',
    wp_terms.name AS 'title2',
    'category' AS 'type'
FROM wp_posts
LEFT JOIN  wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
LEFT JOIN wp_postmeta AS t ON id = t.post_id
INNER JOIN wp_terms ON t.meta_value = wp_terms.term_id 
WHERE post_type = 'nav_menu_item' 
    AND wp_term_relationships.term_taxonomy_id = 15
    AND post_status = 'publish'
    AND wp_postmeta.meta_value = 'category'
    AND t.meta_key =  '_menu_item_object_id'
ORDER BY wp_posts.menu_order)

UNION

(SELECT 
    f.ID AS 'id',
    f.post_title AS 'item',
    f.post_excerpt AS 'title',
    s.post_name AS 'link',
    f.menu_order AS 'order',
    f.post_excerpt AS 'title2',
    'page' AS 'type'
FROM `wp_posts` AS f
LEFT JOIN  wp_term_relationships ON f.ID = wp_term_relationships.object_id
LEFT JOIN  `wp_posts` AS s ON s.ID = (
            SELECT `meta_value` FROM `wp_postmeta` 
            WHERE `post_id` = f.ID AND `meta_key` = '_menu_item_object_id'
            )
WHERE f.post_type = 'nav_menu_item' 
    AND wp_term_relationships.term_taxonomy_id = 15
    AND f.post_status = 'publish'
    AND s.post_type = 'page'
ORDER BY f.menu_order)

UNION

(SELECT
    wp_posts.ID AS 'id',
    wp_posts.post_title AS 'item',
    wp_posts.post_excerpt AS 'title',
    t.meta_value AS 'link',
    wp_posts.menu_order AS 'order',
    wp_terms.name AS 'title2',
    'link' AS 'type'
FROM wp_posts
LEFT JOIN  wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id
LEFT JOIN wp_postmeta AS t ON id = t.post_id
LEFT JOIN wp_terms ON t.meta_value = wp_terms.term_id 
WHERE post_type = 'nav_menu_item' 
    AND wp_term_relationships.term_taxonomy_id = 15
    AND post_status = 'publish'
    AND t.meta_key =  '_menu_item_url'
    AND t.meta_value != ''
ORDER BY wp_posts.menu_order)

ORDER BY `order`;
...
Рейтинг: 0 / 0
можно ли это упростить-оптимизировать?
    #38694373
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно смело убирать ORDER BY из внутренних запросов, оно все равно смысла не имеет. Хотя, возможно, MySQL уже сам догадался это сделать.
...
Рейтинг: 0 / 0
можно ли это упростить-оптимизировать?
    #38694386
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftМожно смело убирать ORDER BY из внутренних запросов, оно все равно смысла не имеет. Хотя, возможно, MySQL уже сам догадался это сделать.
ага! а я-то и не обратил внимания...
спасибо

такой вот "объединенный" запрос будет по времени меньше выполняться чем чем сумма времени три разных?
...
Рейтинг: 0 / 0
можно ли это упростить-оптимизировать?
    #38694392
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboyтакой вот "объединенный" запрос будет по времени меньше выполняться чем чем сумма времени три разных?Наоборот, больше. Еще потребуются накладные расходы на хранение их промежуточных результатов и выполнение над ними DISTINCT.
...
Рейтинг: 0 / 0
можно ли это упростить-оптимизировать?
    #38694393
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще у ряда полей не указана таблица, из которой они берутся. Подозреваю, что часть LEFT JOIN-ов по факту являются просто JOIN-ами. Тогда лучше слово LEFT убрать, чтобы у MySQL была возможность самому выбрать порядок соединения таблиц.
...
Рейтинг: 0 / 0
можно ли это упростить-оптимизировать?
    #38694415
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftлучше слово LEFT убрать, чтобы у MySQL была возможность самому выбрать порядок соединения таблиц.
неееее! без этого ничего не получилось!
да и как мускул решить вместо меня правильно?!
...
Рейтинг: 0 / 0
можно ли это упростить-оптимизировать?
    #38694421
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboymiksoftлучше слово LEFT убрать, чтобы у MySQL была возможность самому выбрать порядок соединения таблиц.
неееее! без этого ничего не получилось!
да и как мускул решить вместо меня правильно?!Ну так убирать, вероятно, нужно не все LEFT-ы подряд, а после внимательного рассмотрения на предмет их логики.
А у MySQL есть некоторая статистика по распределению данных в таблицах. Которую можно принудительно пересобрать командой ANALYZE TABLE.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / можно ли это упростить-оптимизировать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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