powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Вопросы по IT / Деда, а ты пользуешь хранимки и триггеры в MySQL?
58 сообщений из 58, показаны все 3 страниц
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664528
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
Собственно сабж.

А то я тут хочу на основе триггеров БД один модуль на продажу для одной CMS написать. И думаю, может на триггерах всё построить. В Оракле в свое время многое на них строилось. Но это не Оракел.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664537
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Конякула  22.12.2020, 20:05
Собственно сабж.

А то я тут хочу на основе триггеров БД один модуль на продажу для одной CMS написать. И думаю, может на триггерах всё построить. В Оракле в свое время многое на них строилось. Но это не Оракел.
бизнес-логика на основе триггеров ?
да тебя сжечь сразу нахуй, медленно на свечках
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664538
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
defecator  22.12.2020, 20:11
Конякула  22.12.2020, 20:05
Собственно сабж.

А то я тут хочу на основе триггеров БД один модуль на продажу для одной CMS написать. И думаю, может на триггерах всё построить. В Оракле в свое время многое на них строилось. Но это не Оракел.
бизнес-логика на основе триггеров ?
да тебя сжечь сразу нахуй, медленно на свечках
Не. Там не бизнеслогика. В том-то и дело. Там модуль ускорения CMS.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664606
Фотография Программизд 02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Администратор
Гидроцефалы всех стран соединяйтесь!
Хранимки да.
Триггеры нет.

Хранимки тоже использую по минимуму. Например чтобы собрать все ответы на ответы на ответы для исходног опоста
Код: 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.
CREATE PROCEDURE V1_DEEP_COLLECT_REPLIES(IN P_OID INTEGER)

DETERMINISTIC
SQL SECURITY INVOKER
COMMENT ''
PROC:
BEGIN
   DECLARE AFFECTED_CNT INTEGER;

   DELETE FROM TMP_CHILDREN;
   INSERT INTO TMP_CHILDREN (ID) VALUES (P_OID);

   CREATE TEMPORARY TABLE IF NOT EXISTS TMP_DEL_ITEMS2(ID INTEGER);
   CREATE TEMPORARY TABLE IF NOT EXISTS TMP_DEL_ITEMS3(ID INTEGER);

   DELETE FROM TMP_DEL_ITEMS2;
   INSERT INTO TMP_DEL_ITEMS2 (ID)
   SELECT ID FROM TMP_CHILDREN;

   DELETE FROM TMP_DEL_ITEMS3;
   INSERT INTO TMP_DEL_ITEMS3 (ID)
   SELECT ID FROM TMP_CHILDREN;

   SET @AFFECTED_CNT = 0;

   REPEAT

     INSERT INTO TMP_CHILDREN (ID)
     SELECT REPLY_POST_ID FROM V1_POST_HIERARCHY
     WHERE PARENT_POST_ID IN (SELECT ID FROM TMP_DEL_ITEMS2)
     AND REPLY_POST_ID NOT IN (SELECT ID FROM TMP_DEL_ITEMS3);

     SET @AFFECTED_CNT = ROW_COUNT();

     DELETE FROM TMP_DEL_ITEMS2;
     INSERT INTO TMP_DEL_ITEMS2 (ID)
     SELECT ID FROM TMP_CHILDREN;

     DELETE FROM TMP_DEL_ITEMS3;
     INSERT INTO TMP_DEL_ITEMS3 (ID)
     SELECT ID FROM TMP_CHILDREN;

   UNTIL @AFFECTED_CNT = 0
   END REPEAT;

END;
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664619
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Конякула  22.12.2020, 20:13
defecator  22.12.2020, 20:11
Конякула  22.12.2020, 20:05
...
бизнес-логика на основе триггеров ?
да тебя сжечь сразу нахуй, медленно на свечках
Не. Там не бизнеслогика. В том-то и дело. Там модуль ускорения CMS.
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Изменено: 22.12.2020, 21:01 - defecator
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664687
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
defecator  22.12.2020, 21:00
Конякула  22.12.2020, 20:13
defecator  22.12.2020, 20:11
...
Не. Там не бизнеслогика. В том-то и дело. Там модуль ускорения CMS.
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
Дефыч, ты вроде спец по говну, а не по базам? Или ты спец по говнобазам тоже? Ну так вот тебе к расмышлению немного информации:
Есть некая CMS, хорошая, удобная. Но, сцуко, разработчики лет 20 назад когда начинали её делать начитались теории про нормализацию БД и так её нормализировали, что данные там реально не дублируются. Но, если в этой базе много данных, то она так тормозит, что хочется плакать. Чтобы она перестала тормозить надо её немного денормализовать. А может и много. Просто взять и переделать таблички и сделать их шустрее в готовой CMS как ты наверное понимаешь не получится. Она опирается именно на эту структуру БД и по другому работать не умеет. Потому у меня возникла идея рядом с имеющейся структурой сделать свою, денормализованную и чтобы не ковыряться в бизнеслогике и не катомизировать весь стандартный код CMS проще повесить на стандартные таблички триггера, которые будут добалять, обновлять и удалять данные из моих кастомных табличек. А сверх моих кстомных табличек сделать одну единственную кастомную функцию и использовать её совместно со стандартными функциями выбора при выборе данных.

Может я ошибаюсь, но по-моему труггеры тут в самый раз.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664721
Фотография Программизд 02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Администратор
Гидроцефалы всех стран соединяйтесь!
Триггеры как бы удобны они ни были, обычно в серьезных проектах не используют и я слышал много рекомендаций - ни в коем случае их не использовать. С ними блокировки намного больше и дольше как правило, чем без них.

На одном крупном проекте на MySQL у нашего американского партнера пришлось даже уйти от внешних ключей - также по соображением блокировок.

Когда я тоже ушел от внешних ключей на форуме, количество дедлоков скоратилось до единичных редких случаев.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664729
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Конякула  22.12.2020, 21:55
defecator  22.12.2020, 21:00
Конякула  22.12.2020, 20:13
...
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
Дефыч, ты вроде спец по говну, а не по базам? Или ты спец по говнобазам тоже? Ну так вот тебе к расмышлению немного информации:
Есть некая CMS, хорошая, удобная. Но, сцуко, разработчики лет 20 назад когда начинали её делать начитались теории про нормализацию БД и так её нормализировали, что данные там реально не дублируются.
охуенные люди, просто молодцы ! аплодирую стоя - сделали, как надо !
Конякула  22.12.2020, 21:55
Но, если в этой базе много данных, то она так тормозит, что хочется плакать.
скорее всего, кто-то забыл про индексы и злоупотреблял left join
Конякула  22.12.2020, 21:55
Чтобы она перестала тормозить надо её немного денормализовать.
а вот теперь выпей йаду
денормализация допускается только в логировании данных, а ты просто лошара, которая ничего в БД не смыслит
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664808
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
Программизд 02  22.12.2020, 22:23
Триггеры как бы удобны они ни были, обычно в серьезных проектах не используют и я слышал много рекомендаций - ни в коем случае их не использовать. С ними блокировки намного больше и дольше как правило, чем без них.

На одном крупном проекте на MySQL у нашего американского партнера пришлось даже уйти от внешних ключей - также по соображением блокировок.

Когда я тоже ушел от внешних ключей на форуме, количество дедлоков скоратилось до единичных редких случаев.
Я выше описал как хочу использовать триггеры. Как думаешь, стоит? Или всё же запариться и на уровне php всё это реализовать?
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664816
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
defecator  22.12.2020, 22:29
скорее всего, кто-то забыл про индексы и злоупотреблял left join
С индексами там всё хорошо. А вот с джойнами как раз плохо. Потому что там ну условно в CMS есть внутренний тип данных с 10-тью полями. Чтобы его весь выбрать это надо взять и сджойнить 2 таблички сами на себя 10 раз. А теперь представь себе страницу сайта на которой 5 слайдеров по 10 слайдов в каждом в которых вот этот самый тип данных выбирается. 50 объектов, в каждом надо 2 таблики 10 раз на себя сджойнить. Страница откликается через 2 секунды. Это много.
defecator  22.12.2020, 22:29
а вот теперь выпей йаду
денормализация допускается только в логировании данных, а ты просто лошара, которая ничего в БД не смыслит
Доведение до высших форм нормальзации вообще не допускается. Как раз по тому, что они очень ресурсовёмки при выборках данных. Так что пойди хлебни говна.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664829
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Конякула  22.12.2020, 23:14
defecator  22.12.2020, 22:29
скорее всего, кто-то забыл про индексы и злоупотреблял left join
С индексами там всё хорошо. А вот с джойнами как раз плохо. Потому что там ну условно в CMS есть внутренний тип данных с 10-тью полями. Чтобы его весь выбрать это надо взять и сджойнить 2 таблички сами на себя 10 раз. А теперь представь себе страницу сайта на которой 5 слайдеров по 10 слайдов в каждом в которых вот этот самый тип данных выбирается. 50 объектов, в каждом надо 2 таблики 10 раз на себя сджойнить. Страница откликается через 2 секунды. Это много.
если такая хуйня - джойнить саму на себя десятки раз - происходит, то там нет никакой нормализации, говно из говна
подобное присутствует во всякой аналитике, но обычно решается средствами самой СУБД, достаточно, чтобы программер это всё знал

И таки да, аналитика в любой базе совсем не быстрая
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664839
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
defecator  22.12.2020, 23:22
Конякула  22.12.2020, 23:14
defecator  22.12.2020, 22:29
...
С индексами там всё хорошо. А вот с джойнами как раз плохо. Потому что там ну условно в CMS есть внутренний тип данных с 10-тью полями. Чтобы его весь выбрать это надо взять и сджойнить 2 таблички сами на себя 10 раз. А теперь представь себе страницу сайта на которой 5 слайдеров по 10 слайдов в каждом в которых вот этот самый тип данных выбирается. 50 объектов, в каждом надо 2 таблики 10 раз на себя сджойнить. Страница откликается через 2 секунды. Это много.
если такая хуйня - джойнить саму на себя десятки раз - происходит, то там нет никакой нормализации, говно из говна
подобное присутствует во всякой аналитике, но обычно решается средствами самой СУБД, достаточно, чтобы программер это всё знал

И таки да, аналитика в любой базе совсем не быстрая
Ну вот видишь. Потому и надо немного денормализовать. Чтобы вместо десяти джойнов был запрос из одной таблички, который нужные ID-шники возвращает, а потом уже в основной запрос с двумя табличками и единственным джойном этот массив загнать. Будет в 100 раз быстрее.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664861
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Конякула  22.12.2020, 23:28
defecator  22.12.2020, 23:22
Конякула  22.12.2020, 23:14
...
если такая хуйня - джойнить саму на себя десятки раз - происходит, то там нет никакой нормализации, говно из говна
подобное присутствует во всякой аналитике, но обычно решается средствами самой СУБД, достаточно, чтобы программер это всё знал

И таки да, аналитика в любой базе совсем не быстрая
Ну вот видишь. Потому и надо немного денормализовать. Чтобы вместо десяти джойнов был запрос из одной таблички, который нужные ID-шники возвращает, а потом уже в основной запрос с двумя табличками и единственным джойном этот массив загнать. Будет в 100 раз быстрее.
аналитика лежит в другом уровне
ты этого не понимаешь
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664903
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
defecator  22.12.2020, 23:43
Конякула  22.12.2020, 23:28
defecator  22.12.2020, 23:22
...
Ну вот видишь. Потому и надо немного денормализовать. Чтобы вместо десяти джойнов был запрос из одной таблички, который нужные ID-шники возвращает, а потом уже в основной запрос с двумя табличками и единственным джойном этот массив загнать. Будет в 100 раз быстрее.
аналитика лежит в другом уровне
ты этого не понимаешь
У меня это не аналитика. Это просто ускорение основных запросов на сайте.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664956
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Конякула  23.12.2020, 00:07
defecator  22.12.2020, 23:43
Конякула  22.12.2020, 23:28
...
аналитика лежит в другом уровне
ты этого не понимаешь
У меня это не аналитика. Это просто ускорение основных запросов на сайте.
получается, что говно в базе и архитектуре
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2664990
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
defecator  23.12.2020, 00:48
Конякула  23.12.2020, 00:07
defecator  22.12.2020, 23:43
...
У меня это не аналитика. Это просто ускорение основных запросов на сайте.
получается, что говно в базе и архитектуре
Тут я спорить не готов. Сама система удобная в использовании, красивая, удобная в разработке. Но в плане БД... уж какая есть. Я могу только прикрутить что-то сверху, чтобы ускорить сайты, которые я разрабатываю.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2665069
WildMage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конякула  22.12.2020, 21:55
defecator  22.12.2020, 21:00
Конякула  22.12.2020, 20:13
...
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
Дефыч, ты вроде спец по говну, а не по базам? Или ты спец по говнобазам тоже? Ну так вот тебе к расмышлению немного информации:
Есть некая CMS, хорошая, удобная. Но, сцуко, разработчики лет 20 назад когда начинали её делать начитались теории про нормализацию БД и так её нормализировали, что данные там реально не дублируются. Но, если в этой базе много данных, то она так тормозит, что хочется плакать. Чтобы она перестала тормозить надо её немного денормализовать. А может и много. Просто взять и переделать таблички и сделать их шустрее в готовой CMS как ты наверное понимаешь не получится. Она опирается именно на эту структуру БД и по другому работать не умеет. Потому у меня возникла идея рядом с имеющейся структурой сделать свою, денормализованную и чтобы не ковыряться в бизнеслогике и не катомизировать весь стандартный код CMS проще повесить на стандартные таблички триггера, которые будут добалять, обновлять и удалять данные из моих кастомных табличек. А сверх моих кстомных табличек сделать одну единственную кастомную функцию и использовать её совместно со стандартными функциями выбора при выборе данных.

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

например в справочниках что бы гарантированно не ёбнули какие-то нужные записи.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2665161
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
eNose  23.12.2020, 07:47
триггеры надо использовать очень аккуратно.

например в справочниках что бы гарантированно не ёбнули какие-то нужные записи.
Так для этого констрейнты есть
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2665209
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
defecator  23.12.2020, 09:14
eNose  23.12.2020, 07:47
триггеры надо использовать очень аккуратно.

например в справочниках что бы гарантированно не ёбнули какие-то нужные записи.
Так для этого констрейнты есть
при чем тут это?

я про (например) пол "пидарас", который должен быть в справочнике, но пока что пидорасов в сотрудниках типа нет.
так вот пол удалять надо запретить.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2665212
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
eNose  23.12.2020, 10:10
defecator  23.12.2020, 09:14
eNose  23.12.2020, 07:47
...
Так для этого констрейнты есть
при чем тут это?

я про (например) пол "пидарас", который должен быть в справочнике, но пока что пидорасов в сотрудниках типа нет.
так вот пол удалять надо запретить.
Правами это не разруливается?
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2665220
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
defecator  23.12.2020, 10:11
eNose  23.12.2020, 10:10
defecator  23.12.2020, 09:14
...
при чем тут это?

я про (например) пол "пидарас", который должен быть в справочнике, но пока что пидорасов в сотрудниках типа нет.
так вот пол удалять надо запретить.
Правами это не разруливается?
конкретно это - нет.
должен же быть "оператор справочника", у которого должны быть права модификации справочника.
и тут как раз поможет триггер.

вообще легкие триггеры в общем то полезны, проблема как всегда в том, что говнокодеры пытаются заибашить триггер с вычислениями на 100500 строк.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2665222
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
ну и автоинкремент в оракле удобно ж триггерами делать
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2665224
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Программизд 02  22.12.2020, 22:23
Триггеры как бы удобны они ни были, обычно в серьезных проектах не используют и я слышал много рекомендаций - ни в коем случае их не использовать.
чушь, ровно как и с GOTO

просто надо сначала отпиздить говнокодера, а потом пусть пишет код
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2667828
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
Вот запрос который генерируется CMS на одном из блоков страницы:
Код: 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
Как видите тут 3 лефтджойна. Их может быть больше. Они подключают много раз одну и ту же таблицу. В таблице этой может быть много данных и запрос из-за этого тормозит.

Вот структура таблицы cms3_hierarchy:
Код: 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.
CREATE TABLE `cms3_hierarchy` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `rel` int(10) unsigned NOT NULL,
  `type_id` int(10) unsigned NOT NULL,
  `lang_id` int(10) unsigned NOT NULL,
  `domain_id` int(10) unsigned NOT NULL,
  `obj_id` int(10) unsigned NOT NULL,
  `ord` int(11) DEFAULT '0',
  `tpl_id` int(10) unsigned DEFAULT NULL,
  `alt_name` varchar(128) DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT NULL,
  `is_deleted` tinyint(1) DEFAULT NULL,
  `is_visible` tinyint(1) DEFAULT NULL,
  `updatetime` int(11) DEFAULT NULL,
  `is_default` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `types rels_FK` (`type_id`),
  KEY `Prefix from lang_id_FK` (`lang_id`),
  KEY `Domain from domain_id relation_FK` (`domain_id`),
  KEY `hierarchy to plain object image_FK` (`obj_id`),
  KEY `Getting template data_FK` (`tpl_id`),
  KEY `is_default` (`is_default`),
  KEY `alt_name` (`alt_name`),
  KEY `is_deleted` (`is_deleted`),
  KEY `is_active` (`is_active`),
  KEY `ord` (`ord`),
  KEY `rel` (`rel`),
  KEY `updatetime` (`updatetime`),
  KEY `is_visible` (`is_visible`),
  CONSTRAINT `FK_Domain from domain_id relation` FOREIGN KEY (`domain_id`) REFERENCES `cms3_domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Getting template data` FOREIGN KEY (`tpl_id`) REFERENCES `cms3_templates` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Prefix from lang_id` FOREIGN KEY (`lang_id`) REFERENCES `cms3_langs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_hierarchy to plain object image` FOREIGN KEY (`obj_id`) REFERENCES `cms3_objects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_types rels` FOREIGN KEY (`type_id`) REFERENCES `cms3_hierarchy_types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=186 DEFAULT CHARSET=utf8;
cms3_objects
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE `cms3_objects` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `guid` varchar(64) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `is_locked` tinyint(1) DEFAULT NULL,
  `type_id` int(10) unsigned DEFAULT NULL,
  `owner_id` int(10) unsigned DEFAULT NULL,
  `ord` int(10) unsigned DEFAULT '0',
  `updatetime` int(11) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `Object to type relation_FK` (`type_id`),
  KEY `name` (`name`),
  KEY `owner_id` (`owner_id`),
  KEY `is_locked` (`is_locked`),
  KEY `ord` (`ord`),
  KEY `guid` (`guid`),
  KEY `updatetime` (`updatetime`),
  CONSTRAINT `FK_Object to type relation` FOREIGN KEY (`type_id`) REFERENCES `cms3_object_types` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=805 DEFAULT CHARSET=utf8;
cms3_object_content
Код: 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.
CREATE TABLE `cms3_object_content` (
  `obj_id` int(10) unsigned DEFAULT NULL,
  `field_id` int(10) unsigned DEFAULT NULL,
  `int_val` bigint(20) DEFAULT NULL,
  `varchar_val` varchar(255) DEFAULT NULL,
  `text_val` mediumtext,
  `rel_val` int(10) unsigned DEFAULT NULL,
  `tree_val` int(10) unsigned DEFAULT NULL,
  `float_val` double DEFAULT NULL,
  KEY `Content to object relation_FK` (`obj_id`),
  KEY `Contents field id relation_FK` (`field_id`),
  KEY `Relation value reference_FK` (`rel_val`),
  KEY `content2tree_FK` (`tree_val`),
  KEY `int_val` (`int_val`),
  KEY `varchar_val` (`varchar_val`),
  KEY `float_val` (`float_val`),
  KEY `text_val` (`text_val`(8)),
  KEY `K_Complex_FieldIdAndRelVal` (`field_id`,`rel_val`),
  KEY `K_Complex_FieldIdAndTreeVal` (`field_id`,`tree_val`),
  KEY `K_Complex_ObjIdAndFieldId` (`obj_id`,`field_id`),
  CONSTRAINT `FK_Content to object relation` FOREIGN KEY (`obj_id`) REFERENCES `cms3_objects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Contents field id relation` FOREIGN KEY (`field_id`) REFERENCES `cms3_object_fields` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Relation value reference` FOREIGN KEY (`rel_val`) REFERENCES `cms3_objects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_content2tree` FOREIGN KEY (`tree_val`) REFERENCES `cms3_hierarchy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Как тут можно переписать запрос, чтобы он не тормозил?

У меня идея создать таблицу с контентом в которой все поля конкретного внутреннего типа в одной записи и упростить запрос до.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SELECT DISTINCT SQL_CALC_FOUND_ROWS
    h.id AS id, h.rel AS pid
FROM
    cms3_hierarchy h,
    cms3_permissions p,
    (SELECT
        id
    FROM
        kss_type_56 kt56in
    WHERE
        kt56in.fld_509 = '1'
            AND kt56in.fld_516 = '1'
            AND kt56in.fld_517 = '1') kt56
WHERE
    h.type_id IN (56) 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 = kt56.id
ORDER BY h.ord ASC
LIMIT 0 , 10
Подозреваю, что это будет выполняться значительно быстрее. Вот как раз актуальность таблички kss_type_56 думаю поддерживать триггерами.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в 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
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670766
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
3_po  25.12.2020, 02:03
Конякула  25.12.2020, 01:58
А то ты задаешь мне вопросы, которые вообще не ко мне и которые в теме раскрыты чуть больше чем полностью.
Тогда брось каку и забудь.
Что значит брось? Это моя работа.
3_po  25.12.2020, 02:07
Кстати, на примере тех трех джоинов левых, ты как таблицу денормализовывать собрался?
Этот вопрос тоже раскрыт чуть больше чем полностью в этой теме. Благодаря нашему любопытному брату иНозию.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670857
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Непонятно каким боком триггеры к селекту
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670864
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
eNose  25.12.2020, 05:11
Непонятно каким боком триггеры к селекту
Брат иНозий, ты не внимателен 2664687
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670865
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Конякула  25.12.2020, 05:33
eNose  25.12.2020, 05:11
Непонятно каким боком триггеры к селекту
Брат иНозий, ты не внимателен 2664687
Это я понял.
Но дальше у тебя идет выборка и тебе надо изменить именно запросы.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2670866
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Ты две задачи пытаешься совместить.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2671338
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
eNose  25.12.2020, 05:36
Конякула  25.12.2020, 05:33
eNose  25.12.2020, 05:11
...
Брат иНозий, ты не внимателен 2664687
Это я понял.
Но дальше у тебя идет выборка и тебе надо изменить именно запросы.
Брат иНозий, ты не внимателен 2669646
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2671342
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
eNose  25.12.2020, 05:37
Ты две задачи пытаешься совместить.
Задача одна: Ускорить работу сайтов.

Состоит из 2х частей:
1. Создание вспомогательных таблиц
2. Переработка кода выбора данных с использованием этих таблиц.
...
Рейтинг: 0 / 0
Деда, а ты пользуешь хранимки и триггеры в MySQL?
    #2671347
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
В общем я выяснил что хотел. Всем спасибо, кто участвовал.

Отдельное спасибо Деде, за то что он показал, что хранимки могут использоваться и с пользой в относительно нагруженном проекте.
...
Рейтинг: 0 / 0
58 сообщений из 58, показаны все 3 страниц
Форумы / Вопросы по IT / Деда, а ты пользуешь хранимки и триггеры в MySQL?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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