powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Вопросы по IT / Деда, а ты пользуешь хранимки и триггеры в MySQL?
25 сообщений из 58, страница 2 из 3
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668026
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Конякула  24.12.2020, 00:52
Код: SQL
1.
h.type_id IN (56)
еббадь...
Конякула  24.12.2020, 00:52
Код: SQL
1.
2.
3.
4.
5.
6.
AND ((oc_509_lj.int_val = '1'
        OR oc_516_lj.int_val = '1'
        OR oc_517_lj.int_val = '1'))
        AND h.lang_id = '1'
        AND h.is_deleted = '0'
        AND h.is_active = '1'
еббадь...
Конякула  24.12.2020, 00:52
Код: SQL
1.
AND p.owner_id IN (579)
еббадь...
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668102
Фотография Программизд 02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Администратор
Гидроцефалы всех стран соединяйтесь!
eNose 

Второе бывает когда предусмотрено для списка но в кокретном случае элемент в списке всего один.

Чтотдумаешь оптииайзер не рюхнет?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668176
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
Программизд 02  24.12.2020, 10:06
eNose 

Второе бывает когда предусмотрено для списка но в кокретном случае элемент в списке всего один.

Чтотдумаешь оптииайзер не рюхнет?
Этот запрос сформирован набором php-функций. То есть это не просто текст, а там функции вызываются и они формируют запрос. Функции универсальные. Потому он выглядит немного странно. Там где in там в зависимости от параметров может быть как одно значение, так и несколько.

В любом случае это то что есть и это надо ускорить.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668180
Фотография Программизд 02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Администратор
Гидроцефалы всех стран соединяйтесь!
Конякула  24.12.2020, 11:16
Этот запрос сформирован набором php-функций. То есть это не просто текст, а там функции вызываются и они формируют запрос. Функции универсальные. Потому он выглядит немного странно. Там где in там в зависимости от параметров может быть как одно значение, так и несколько.
+1 у меня тоже такие есть. потому что список может варьироваться. Например поиск

... AND FORUM_ID IN (...)
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668430
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
я понимаю что это запрос так сформировался

но результат-то "еббадь..." :)
и никуда от этого не денешься!
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668440
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Конякула  24.12.2020, 00:52
Код: SQL
1.
2.
AND h.is_deleted = '0'
        AND h.is_active = '1'
а может быть активным и удалённым одновременно?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668443
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Конякула 

при сравнениях на 0/1 посмотри количество строк с нолями и единицами (примерно) и сравнивай с тем, чего меньше количественно
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668853
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
eNose  24.12.2020, 12:38
Конякула  24.12.2020, 00:52
Код: SQL
1.
2.
AND h.is_deleted = '0'
        AND h.is_active = '1'
а может быть активным и удалённым одновременно?
Да.

Удалённая запись - это которая в корзине лежит. Она может быть активной. При удалении просто статус удаления ставится, а остальное не меняется. Чтобы в случае восстановления всё восстановилось как было. То есть активные восстановился активными, а неактивные - неактивными.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2668857
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
eNose  24.12.2020, 12:40
Конякула 

при сравнениях на 0/1 посмотри количество строк с нолями и единицами (примерно) и сравнивай с тем, чего меньше количественно
Я не могу непосредственно править эти запросы. Я могу только сверху своё чего-то накрутить.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2669281
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Конякула  24.12.2020, 15:53
eNose  24.12.2020, 12:40
Конякула 

при сравнениях на 0/1 посмотри количество строк с нолями и единицами (примерно) и сравнивай с тем, чего меньше количественно
Я не могу непосредственно править эти запросы. Я могу только сверху своё чего-то накрутить.
Как ты тогда собрался увеличивать скорость, если нельзя изменить запрос?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2669287
Фотография Программизд 02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Администратор
Гидроцефалы всех стран соединяйтесь!
eNose  24.12.2020, 18:44
Конякула  24.12.2020, 15:53
eNose  24.12.2020, 12:40
...
Я не могу непосредственно править эти запросы. Я могу только сверху своё чего-то накрутить.
Как ты тогда собрался увеличивать скорость, если нельзя изменить запрос?
Накрутив сверху чего нибдуь.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2669403
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Конякула  24.12.2020, 00:52
Как тут можно переписать запрос, чтобы он не тормозил?
вот какой был пост конякулы
Программизд 02  24.12.2020, 18:47
eNose  24.12.2020, 18:44
Конякула  24.12.2020, 15:53
...
Как ты тогда собрался увеличивать скорость, если нельзя изменить запрос?
Накрутив сверху чего нибдуь.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2669646
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
eNose  24.12.2020, 19:34
Конякула  24.12.2020, 00:52
Как тут можно переписать запрос, чтобы он не тормозил?
вот какой был пост конякулы
Программизд 02  24.12.2020, 18:47
eNose  24.12.2020, 18:44
...
Накрутив сверху чего нибдуь.
Друг мой иНос, ты точно хочешь знать все подробности это душещипательной истории? Ну изволь. Но не говори потом, что я не предупреждал.

Вот запрос (тот самый что я выше цитировал):
Код: 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 DISTINCT SQL_CALC_FOUND_ROWS
    h.id AS id, h.rel AS pid
FROM
    cms3_hierarchy h,
    cms3_permissions p,
    cms3_objects o
        LEFT JOIN
    cms3_object_content oc_509_lj ON oc_509_lj.obj_id = o.id
        AND oc_509_lj.field_id = '509'
        LEFT JOIN
    cms3_object_content oc_516_lj ON oc_516_lj.obj_id = o.id
        AND oc_516_lj.field_id = '516'
        LEFT JOIN
    cms3_object_content oc_517_lj ON oc_517_lj.obj_id = o.id
        AND oc_517_lj.field_id = '517'
WHERE
    h.type_id IN (56)
        AND ((oc_509_lj.int_val = '1'
        OR oc_516_lj.int_val = '1'
        OR oc_517_lj.int_val = '1'))
        AND h.lang_id = '1'
        AND h.is_deleted = '0'
        AND h.is_active = '1'
        AND (p.rel_id = h.id AND p.level & 1
        AND p.owner_id IN (579))
        AND h.id IN (33 , 28, 24, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 104,  22,  121,  61,  37, 34, 58, 35, 41, 56)
        AND h.obj_id = o.id
ORDER BY h.ord ASC
LIMIT 0 , 10
Этот запрос генерируется вот таким php-кодом:
Код: PHP
1.
2.
3.
4.
5.
6.
$v_sel_page = new selector('pages');
$v_sel_page->types('hierarchy-type')->name('catalog', 'object');
$v_sel_page->where('hierarchy')->page($p_root_id)->childs(1000);
$v_sel_page->where('bestseller')->equals(true); // Это поле для разных типов с системе создалось разное, хоть и
// называется одинаково потому в запросе джойнится 3 раза 509, 516 и 517
$v_sel_page->limit(0, $v_limit);
Если там полей по которым надо отфильтровать несколько, то этих джойнов может быть достаточно много.

А вот если php-код будет скажем вот такой:
Код: PHP
1.
2.
3.
4.
$v_ids = [12, 14, 1231, 43, 2312, 443];
$v_sel_page = new selector('pages');
$v_sel_page->where('id')->equals($v_ids);
$v_sel_page->limit(0, $v_limit);
То запрос будет вот таким:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
SELECT DISTINCT SQL_CALC_FOUND_ROWS h.id as id, h.rel as pid
FROM cms3_hierarchy h, cms3_permissions p
WHERE h.domain_id = '1'
AND h.lang_id = '1'
AND h.is_deleted = '0'
AND h.is_active = '1'
AND h.id IN('12', '14', '1231', '43', '2312', '443')
AND (p.rel_id = h.id AND p.level & 1 AND p.owner_id IN(579))
Я предполагаю, что вот этот второй запрос будет работать существенно быстрее. А чтобы иметь возможность его выполнить я планирую предварительно сделать вот такой запрос:
Код: SQL
1.
SELECT ID FROM kss_type_65 t65 WHERE t65.bestseller=1
Оберну этот запрос в php-функцию, которая вернет массив и потом подставлю этот массив использую как выше описал:
Код: PHP
1.
2.
3.
4.
$v_ids = kss_filtratedObjects(65, [['bestseller', '=', '1']);
$v_sel_page = new selector('pages');
$v_sel_page->where('id')->equals($v_ids);
$v_sel_page->limit(0, $v_limit);
Ну вот приблизительно такой у меня не побоюсь этого слова гениальный план. Одна загвоздка, придумал его не я. Я его только пытаюсь развить.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2669925
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
Ну, что друг мой иНос, теперь ты доволен осознав всю мощь моего замысла?

Может теперь чего про использование триггеров скажешь?
...
Изменено: 24.12.2020, 22:17 - Конякула
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670420
Фотография 3_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конякула  22.12.2020, 20:13
Там модуль ускорения CMS.
Конякула  22.12.2020, 20:05
на триггерах всё построить
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670563
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
3_po  25.12.2020, 00:19
Конякула  22.12.2020, 20:13
Там модуль ускорения CMS.
Конякула  22.12.2020, 20:05
на триггерах всё построить
И чего?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670571
Фотография 3_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конякула  25.12.2020, 00:47
3_po  25.12.2020, 00:19
Конякула  22.12.2020, 20:13
...
Конякула  22.12.2020, 20:05
...
И чего?
На триггерах и ускорение, это в большинстве случаев все же разные вещи.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670721
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
3_po  25.12.2020, 00:52
Конякула  25.12.2020, 00:47
3_po  25.12.2020, 00:19
...
И чего?
На триггерах и ускорение, это в большинстве случаев все же разные вещи.
Но тут мы ведь обсуждаем не большинство случаев, а один конкретный. Так ведь?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670749
Фотография 3_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конякула  25.12.2020, 01:39
3_po  25.12.2020, 00:52
Конякула  25.12.2020, 00:47
...
На триггерах и ускорение, это в большинстве случаев все же разные вещи.
Но тут мы ведь обсуждаем не большинство случаев, а один конкретный. Так ведь?
У нас корпоратив был, лень думать. Тебе уже про 0 и 1 сказали, тема работает, спроси деду.
Нахуя тебе эти три джойна?
Цитата 
LEFT JOIN
cms3_object_content oc_509_lj ON oc_509_lj.obj_id = o.id
AND oc_509_lj.field_id = '509'
LEFT JOIN
cms3_object_content oc_516_lj ON oc_516_lj.obj_id = o.id
AND oc_516_lj.field_id = '516'
LEFT JOIN
cms3_object_content oc_517_lj ON oc_517_lj.obj_id = o.id
AND oc_517_lj.field_id = '517'
Чтобы проверить эту ебанину?
Цитата 
WHERE ... AND ((oc_509_lj.int_val = '1' OR oc_516_lj.int_val = '1' OR oc_517_lj.int_val = '1'))
А так?
Цитата 
exists (select 1 from cms3_object_content oc_5хх_lj where oc_5хх_lj.obj_id = o.id and oc_5хх_lj.field_id in ( '509', '516', '517') and oc_5хх_lj.int_val = '1' )
Куда тебе в триггеры лезть...
Хотя я то куда лезу, пойду спать.
...
Изменено: 25.12.2020, 01:58 - 3_po
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670750
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
У меня есть гепотиза, что хранимки и в особенности триггеры mysql почти не используются, потому то они появились относительно не давно и а) разработчики ещё не успели прочувствовать что это такое; б) разработчики просто боятся, что на некоторых серверах их хранимки и триггеры не будут работать, потому что там стоить версия СУБД которая это не поддерживает.

Я лет 15 назад был программистом БД Oracle. Так вот там хранимки используются и в хвост и в гриву. Триггеры правда мне писать не приходилось, но хранимки писал процентов 70 времени работы. Но там это всё поддерживается с давних времен (с 1992 года) и программисты уже оценили, что это такое. А в mysql - это недавно появилось (в 2005). Да ещё как-то не до конца появилось. Пакетов нет, ООП нет, синтаксис корявый. Да ещё и триггеры при каскадных изменениях не работают. Вот разработчики и дёргают то, к чему привыкли и что точно работает.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670753
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
3_po  25.12.2020, 01:55
Конякула  25.12.2020, 01:39
3_po  25.12.2020, 00:52
...
Но тут мы ведь обсуждаем не большинство случаев, а один конкретный. Так ведь?
У нас корпоратив был, лень думать. Тебе уже про 0 и 1 сказали, тема работает, спроси деду.
Нахуя тебе эти три джойна?
Цитата 
LEFT JOIN
cms3_object_content oc_509_lj ON oc_509_lj.obj_id = o.id
AND oc_509_lj.field_id = '509'
LEFT JOIN
cms3_object_content oc_516_lj ON oc_516_lj.obj_id = o.id
AND oc_516_lj.field_id = '516'
LEFT JOIN
cms3_object_content oc_517_lj ON oc_517_lj.obj_id = o.id
AND oc_517_lj.field_id = '517'
Чтобы проверить эту ебанину?
Цитата 
WHERE ... AND ((oc_509_lj.int_val = '1' OR oc_516_lj.int_val = '1' OR oc_517_lj.int_val = '1'))
А так?
Цитата 
exists (select 1 from cms3_object_content oc_509_lj where oc_509_lj.obj_id = o.id and oc_509_lj.field_id in ( '509', '516', '517') and oc_509_lj.int_val = '1' )
Куда тебе в триггеры лезть...
Хотя я то куда лезу, пойду спать.
Да пойди поспи. А то ты задаешь мне вопросы, которые вообще не ко мне (как там было? Мопед не мой, я просто разместил объяву) и которые в теме раскрыты чуть больше чем полностью.
...
Изменено: 25.12.2020, 02:00 - Конякула
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670755
Фотография 3_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конякула  25.12.2020, 01:58
А то ты задаешь мне вопросы, которые вообще не ко мне и которые в теме раскрыты чуть больше чем полностью.
Тогда брось каку и забудь.
...
Изменено: 25.12.2020, 02:03 - 3_po
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670758
Фотография 3_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, на примере тех трех джоинов левых, ты как таблицу денормализовывать собрался?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670763
Фотография 3_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3_po  25.12.2020, 02:07
Кстати, на примере тех трех джоинов левых, ты как таблицу денормализовывать собрался?
А, епта, нашел!
Цитата 
(SELECT
id
FROM
kss_type_56 kt56in
WHERE
kt56in.fld_509 = '1'
AND kt56in.fld_516 = '1'
AND kt56in.fld_517 = '1') kt56
А кто гарантирует, что завтра не появятся поля kt56in.fld_938 и kt56in.fld_208873?
Это ты от большого ума решил все поля умножить на три?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670765
Фотография 3_po
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Епта, у тебя еще и условия разные получаются
Цитата 
AND ((oc_509_lj.int_val = '1'
OR oc_516_lj.int_val = '1'
OR oc_517_lj.int_val = '1'))
Цитата 
kt56in.fld_509 = '1'
AND kt56in.fld_516 = '1'
AND kt56in.fld_517 = '1'
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 2 из 3
Форумы / Вопросы по IT / Деда, а ты пользуешь хранимки и триггеры в MySQL?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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