Задать вопрос
  • Как оптимизировать запрос к бд?

    shambler81
    @shambler81 Автор вопроса
    ThunderCat,
    ну тут я немного переборщил, все-же оказалось что там что-то есть.
    Главное что меня смущяет чт сам запрос ничего особого не представляет.
    и делается реально быстро.
    Я так понимаю что проблема в
    LEFT JOIN `nk_xml_import`.`xml_places`  `xml`  ON `node`.`nid` = `xml`.`build_place` /* metka */
    LEFT JOIN `nk_xml_import`.`kvartiri`  `xmlrooms`  ON `xml`.`yandex_building_id` = `xmlrooms`.`yaid` /* metka rooms */

    Поскольку вот тут то таблицы по 130К строк
    а эти джойнятся после вот этих товарищей и просто поскольку они позже то там массив сортируется еще раз, именно из -за этого падает скорость.
  • Как оптимизировать запрос к бд?

    shambler81
    @shambler81 Автор вопроса
    ThunderCat, тут вообще полная самопись, разраба который это чудо делал естественно нет. О каких -то индексах в этом проекте я даже не думал. В виду 100% их отсутствия.
  • Как оптимизировать запрос к бд?

    shambler81
    @shambler81 Автор вопроса
    Боюсь что запрос не для слабонервных не уверен что это пойдет в рамках бесплатной помощи на тостере, дело в том что "кодер" который это дела не парился с оптимизацией и выбирал все данные для страницы в 1 массив.
    даже не спрашивайте..
    учитывая что еще все это запрашивается при старте шаблона страницы в не зависимости от надобности этих данных на странице вообще. И как минимум 90% этих данных есть в бд текущего движка, запросы идут с 3 бд.
    В общем я могу конечно дать весь запрос,
    Но по нему сразу станет понятно что это не самая лучшая идея для обсуждения.
    я нашел самые медленные места.
    Вот эти джойны замедляют страничку раз 10 а по факту там две таблицы по 500 значений и 400. соответственно.

    ad_c


    CREATE TABLE `ad_c` (
    `cid` int(10) NOT NULL,
    `ad_name` varchar(450) NOT NULL,
    `bid` int(10) NOT NULL,
    `ban_type` int(3) NOT NULL COMMENT '1-3 ТГБ, 4 - крстр, 5 - 940x90 середина, 6 - брендирование, 7 - 940x90 верхний, 8 - 940x90 - нижний',
    `obj_id` int(10) NOT NULL,
    `ra_id` int(10) NOT NULL,
    `dev_id` int(10) NOT NULL,
    `w_site` tinyint(1) NOT NULL COMMENT '1 - Nk, 2 - SPB, 3 - NP',
    `m_invoice` int(11) NOT NULL DEFAULT '0',
    `start_date` datetime NOT NULL,
    `end_date` datetime NOT NULL,
    `stopflag` tinyint(1) NOT NULL DEFAULT '0',
    `zaglusha` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'является ли заглушкой',
    `phone` varchar(20) DEFAULT NULL COMMENT 'номер телефона для базы',
    `dyn_number` tinyint(1) NOT NULL,
    `whocreated` int(11) NOT NULL COMMENT 'ID создателя',
    `time_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Когда создал',
    `whoedited` int(11) DEFAULT NULL COMMENT 'ID редактора',
    `time_edited` timestamp NULL DEFAULT NULL COMMENT 'Когда редактировал'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    -- Дамп данных таблицы `ad_c`
    --

    INSERT INTO `ad_c` (`cid`, `ad_name`, `bid`, `ban_type`, `obj_id`, `ra_id`, `dev_id`, `w_site`, `m_invoice`, `start_date`, `end_date`, `stopflag`, `zaglusha`, `phone`, `dyn_number`, `whocreated`, `time_created`, `whoedited`, `time_edited`) VALUES
    (13, 'РА Нектарин // MR GROUP// ЖК Пресня Сити', 96, 1, 11866, 35, 2469, 1, 0, '2019-06-28 00:01:01', '2020-01-31 23:59:59', 0, 0, '', 1, 24, '2019-06-28 12:07:42', 16, '2019-12-30 12:48:53'),
    (14, 'Риэлти Проджект/ ЛСР / Ленинградка 58', 97, 1, 14416, 43, 558, 1, 0, '2019-06-28 00:01:01', '2019-07-31 23:59:59', 0, 0, '', 1, 24, '2019-06-28 12:12:19', 16, '2019-07-25 14:58:03'),
    (15, 'РА Нектарин / // ЖК Ты и Я / Мангазея', 98, 1, 13868, 0, 8573, 1, 0, '2019-06-28 00:01:01', '2019-06-30 23:59:59', 0, 0, NULL, 1, 24, '2019-06-28 12:15:11', NULL, NULL),


    ad_banners

    - Структура таблицы `ad_banners`
    --

    CREATE TABLE `ad_banners` (
    `bid` int(10) NOT NULL,
    `header_text` varchar(255) NOT NULL,
    `text` varchar(255) NOT NULL,
    `footer` varchar(255) NOT NULL,
    `url` varchar(400) NOT NULL,
    `filename` varchar(255) NOT NULL,
    `onlyfilename` varchar(255) DEFAULT NULL,
    `onlyext` varchar(255) DEFAULT NULL,
    `zeropixel` varchar(350) NOT NULL,
    `slider` tinyint(1) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    --
    -- Дамп данных таблицы `ad_banners`
    --

    INSERT INTO `ad_banners` (`bid`, `header_text`, `text`, `footer`, `url`, `filename`, `onlyfilename`, `onlyext`, `zeropixel`, `slider`) VALUES
    (96, 'Жилой Комплекс «Пресня Сити»', 'Дом сдан! 7 мин. пешком от метро Улица 1905 года. В 4км от Кремля! Детский сад, центр раннего развития, подземный многоуровневый паркинг.', '+7 (495) 023-61-42', 'https://wcm-ru.frontend.weborama.fr/fcgi-bin/dispa...', '321676presnyaka_opop_15mln_dudi.jpg', '321676presnyaka_opop_15mln_dudi', 'jpg', '', 0),
    (97, 'ЖК Ленинградка 58, м. Водный стадион', 'Квартиры бизнес-класса от 6,9 млн ₽. Панорамные виды. Выгода до 600 000 р. Рассрочка на 2 года. Звоните!', '+7 (495) 104-75-59', 'leningradka58.ru/?utm_source=naydikvartiru&utm_con...', '339773tptptpopop.jpg', '339773tptptpopop', NULL, '', 0),

    НА выходе этого джойна мы получаем
    Тайтл банера ( видов банеров действиельно 4)
    текст банера
    картинку
    и статус что он работает.

    Весь же запрос тупо не влезет в лимит размера на тостере ;(( но могу дать ссылкой
    Весь запрос https://naydikvartiru.ru/sql.txt
  • Если выучить чисто Unix, то насколько потом легко перейти на Linux?

    shambler81
    @shambler81 Куратор тега Linux
    работать сможете без проблем.
    А грамотней всего называть *NIX системы
  • Не актуально [ВОПРОС ЗАКРЫТ]?

    ssh может выступать и в роле посредника
    такое он тоже умеет в чем проблема кэп ?
  • Как добавить join с двумя условиями к прошлому join?

    shambler81
    @shambler81 Автор вопроса
    Спсибки кэп, мне как-разн нужно в пыху ;)
    В bash я бы и сам отфильтровал никого не спрашивал а вот в неродной сфере тыкаюсь как таракан в каждую стенку ;)
    Ответ понял спасибо,
    ну и да в массиве одно значение, так что вообще побоку ;)
  • Как добавить join с двумя условиями к прошлому join?

    shambler81
    @shambler81 Автор вопроса
    Rsa97, а разве 'ban_type' не вылезет два раза ? или там важна очередность ?
    не совсем понимаю ведь они оба удовлетворяют условию ?
    какова логика работы можно в двух словах ?
  • Как добавить join с двумя условиями к прошлому join?

    shambler81
    @shambler81 Автор вопроса
    это мой второй Join за всю историю, и 5-6 слеект наверное по этому ;)
    SELECT
    *
    FROM
    `betaintranet`.`ad_stat_cleaned`
    LEFT JOIN `ad_c` ON ad_stat_cleaned.bid = ad_c.bid
    LEFT JOIN `total` ON ad_c.ban_type = total.ban_type and total.w_site = ad_c.w_site
    WHERE
    `date` = '2020-09-09'

    Поменял, теперь вопрос в том как не отображать ban_type и w_site второй раз

    5f61e727d3fdf957043706.png
  • Почему $total не меняется?

    shambler81
    @shambler81 Автор вопроса
    Adamos,
    Да именно так и сделал, все заработало.
    Всем спасибо
  • Почему $total не меняется?

    shambler81
    @shambler81 Автор вопроса
    логика простая
    $daily = $total / $daysInMonth;
    $part = round($totlal / $daysInMonth / 100 * $rand);
    должны меняться от вида банера. сейчас у всех них одно значение, что там делает дальше это побоку там все работает.
  • Почему $total не меняется?

    shambler81
    @shambler81 Автор вопроса
    не не сумма а в зависимости от вида баннера немного изменяется статистика, ну а поскольку баннеры в разных местах то и количество показов у них разное.
  • Почему $total не меняется?

    shambler81
    @shambler81 Автор вопроса
    Вот регуляции пожалуйста, баш пожалуйста, но пхп я даже не жуниор.
    Можно на пальцах
    И то что total не в whele я тоже понимаю и почему он принимает последнее значение тоже примерно понимаю, и да скорее всего в правы.
    НО я не знаю как это написать ;)
  • Почему $total не меняется?

    shambler81
    @shambler81 Автор вопроса
    Спасибо но я даже не разраб пхп, считайте что ваш сисадмин написал кривоватый код мало того мне на это убожество понадобилось около 2 дней ;(
    Так что если есть возможность не мордой тыкать а показать как ;)
  • Почему $total не меняется?

    shambler81
    @shambler81 Автор вопроса
    CREATE TABLE `ad_c` (
      `cid` int(10) NOT NULL,
      `ad_name` varchar(450) NOT NULL,
      `bid` int(10) NOT NULL,
      `ban_type` int(3) NOT NULL COMMENT '1-3 ТГБ, 4 - крстр, 5 - 940x90 середина, 6 - брендирование, 7 - 940x90 верхний, 8 - 940x90 - нижний',
      `obj_id` int(10) NOT NULL,
      `ra_id` int(10) NOT NULL,
      `dev_id` int(10) NOT NULL,
      `w_site` tinyint(1) NOT NULL COMMENT '1 - Nk, 2 - SPB, 3 - NP',
      `m_invoice` int(11) NOT NULL DEFAULT '0',
      `start_date` datetime NOT NULL,
      `end_date` datetime NOT NULL,
      `stopflag` tinyint(1) NOT NULL DEFAULT '0',
      `zaglusha` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'является ли заглушкой',
      `phone` varchar(20) DEFAULT NULL COMMENT 'номер телефона для базы',
      `dyn_number` tinyint(1) NOT NULL,
      `whocreated` int(11) NOT NULL COMMENT 'ID создателя',
      `time_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Когда создал',
      `whoedited` int(11) DEFAULT NULL COMMENT 'ID редактора',
      `time_edited` timestamp NULL DEFAULT NULL COMMENT 'Когда редактировал'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Насколько я понимаю ban_type не принимал бы никаких значений поскольку условие не соблюдалось.
  • Как убрать файл из редиректа .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    А как вы определили ?
    покажите пожалуйста коды ответа
  • Не работают сайты, вирус, взлом, где искать?

    shambler81
    @shambler81 Куратор тега htaccess
    Grizar, в зависимости от системы прав
    доступных команд и тд и тп, в общем я видел даже как устанавливали модули на апачь, правда один раз но тем не менее.
    Для точного ответа нужно как минимум показать права на файлы права на директории
    ограничене на команду exec и так далее, как минимум попробуй создать через php_exec файл на уровень выеш.
    Если создался то да можно 100%
  • Grep заменой символа при записи в файл?

    grep -a -h -r -m1 xdms:number */*document.xml | cut -f 2 -d '>' | cut -f 1 -d '<' | awk '{print $0";"}'  | egrep -o [0-9].+ | sed 's/^/П/g'> number.txt

    так пойдет ?
    у тебя там шляпа была и у первх и у вторых значений
    5f5f6cbf98fae849140099.png

    дабы не смущать я тупо отрезеал все до цифр.
    Да и греп с бинарниками по умлчанию не работает так что пришлось добавить -a

    вывод

    П26-55550000;   2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П26-98765;      2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П26-98765;      2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П26-1111;       2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П26-6666;       2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П26-2222;       2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П26-7777;       2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П26-8989;       2020-07-10;     fe042606-0147-4bdd-9cfd-598e2694dda9;
    П48-9999;       2020-07-14;
    П48-10101010;   2020-07-14;
    П48-111111000;  2020-07-14;
    П48-1212000;    2020-07-14;
    П48-10; 2020-07-14;
    П48-104852;     2020-07-14;
    П48-104855;     2020-07-14;
    П48-104875;     2020-07-14;
    П48-104888;     2020-07-14;
    П48-104912;     2020-07-14;
    П48-104916;     2020-07-14;
    П48-104917;     2020-07-15;
    П48-104923;     2020-07-14;
    П48-104935;     2020-07-14;
    П48-104937;     2020-07-14;
    П48-104940;     2020-07-14;
    П48-104962;     2020-07-14;
    П48-106820;     2020-07-16;
    П48-106834;     2020-07-17;
    П48-1068332;    2020-07-17;
    П48-1068342;    2020-07-17;