Задать вопрос
Ответы пользователя по тегу MySQL
  • Как мне защитить файл подключения к бд?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    <?php
    $mysecret = 'supersecret';

    Минимальный совет из "PHP Правильный путь" звучит как храните свои конфиги хотя бы в виде php файлов.
    Предположим, что мы сохранили такой скрипт в корне www.
    При правильной настройке сервера посетитель увидит пустой экран по урлу //your.site/script.php
    так как в нашем файле нет команд вывода.
    В первой строке полный синтаксис, в варианте "<?" может случиться ситуация показа исходного текста, если сшорт таги отключены. И остается риск того, что php отвалиться и будет показываться исходный код.

    Обще принятой практикой сейчас считается подход, когда все исходные файлы лежат выше диретории www рут.
    В самой директории только один скрипт точки входа (index.php)

    Ваши пароли скорее утекут по другой причине, чем из-за того, что к скрипту обратяться на прямую.

    Вы используете eval c данными от пользователя или на сайте можно загружать через форму файлы.
    На шаред хостинге ошиблись с разделением прав для ftp.

    У Вас используются системы контроля версий кода и конфиги не добавлены в игнорируемые.
    Ответ написан
  • SELECT x FROM таблица с огромными полями. Создать ли отдельную таблицу с x для оптимизации?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Надеюсь индекс (id,book_id, title) у Вас построен ?
    Если да и оперативки достаточно, чтобы он целиком оставался в ОЗУ, то
    запрос select id,book_id,title выполняется без обращения к диску. Если памяти маловато, то перечитавает с диска только файл индекса.

    А вот для индекса только по book_id будет читать и основной файл.

    А так ваше предположение сделать кей - валуе хранилище для блобов вполне правильное.
    Будет прекрасно работать по первичному ключу.

    Но думаю пока дробить нет смысла. Просто пишите код так, чтобы потом можно было легко переделать.
    Н-р заведите две константы с одинаковым пока значением
    TABLE_CHAPTERS_INFO и TABLE_CHAPTERS_TEXT

    А разнесете их физически, после того как захотите добавить еще какие-то поля помимо титла. Н-р размер в байтах и / или листах, дату обновления
    Ответ написан
    3 комментария
  • Есть ли смысл перенести Mysql на другой сервер для ускорения сайта?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Во первых, PageSpeed инсайт это просто попугаи от гугла. Снесите с сайта яндекс метрику и сразу +10-20.
    100 попугаев означает лишь только одно - гугл не знает как эту страницу сделать быстрее.
    с оценкой 100 страница может открываться 5-10 секунд, а отрисовывающаяся менее секунды иметь оценку на уровне 70-80.

    Во вторых, показателей быстродействия гораздо больше.
    Как бакендер (и на то, что влияет БД) я бы ориентировался на "Время до передачи первого байта ответа"
    Минимум этого отклика 5-7мс. Н-р голый PHP или Symfony с прогретыми кешами, когда для ответа не используется ничего кроме самого PHP.

    Страница с одним запросом (SELECT ) по первичному индексу это от 5мс.
    Время от реквеста до начала ответа должно быть менее 100мс (в идеале 25-50мс).

    Во вторых, мне кажется что вы смотрите время полной отрисовки страницы.
    Тут нужно оптимизировать время отрисовки начального фрейма страницы. Если на странице много картинок, то сделать ленивую подзагрузку их. Сперва плейсхолдеры, а к моменту прокрутки скачивать.

    Возвращаясь к выносу муськи на другой сервер.
    В пределах одного компа лучше с ней работать через сокеты. Стек TCP медленее. А если на другом, то сравнивайте сами, ахз может у Вас там будет 10Гигабитс. Но я бы на это не расчитывал, не те тарифы.

    Оптимизируйте запросы. Создавайте оптимальные индексы. Для сложных фильтров стоит подумать о других механизмах.

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

    P.S. Заниматься глубокой оптимизацией на VPS считаю извращением. Так как никогда не знаешь какой на этой машине окажется оверсейлз (продано 146 процентов ресурсов или больше ). Стоит ли что-то кешировать в оперативе или будет только хуже, когда там виртуалки начнут переключаться и свопиться под большой нагрузкой от соседей по серваку.
    Ответ написан
    Комментировать
  • Как можно ускорить выполнение SQL запроса?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    как понимаю это сортировка товаров от наиболее подходящих до обладающих 1м из признаков.
    Сделай вспомогательную таблицу статистики сколько товаров всего с заданным проп_ид.
    обновление по тригерам.

    потом смотришь в нее и береш максимальный из (1,2,3...) например 3
    Далее запрос будет из двух проекций (A и B) на твою таблицу
    select product_id from `product_prop` A where prop_id=3 (этим мы уходим от фулскана по 85М)
    и добавляем подзапрос посчитать сколько совпало осталных свойств
    select product_id,(... подзапрос .....) from `product_prop` A
    Ответ написан
    2 комментария
  • Как получить запись по ID через lastInsertId сразу после вставки?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Тупой вопрос. А в таблице есть первичный ключ (primary,autoincrement) ?
    Обычно поле называют id и тип у него длинное целое
    Ответ написан
  • Как можно установить PhpMyAdmin на MacOs?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Я накатывал по статье Kristian Lumme How To Set Up Apache and PHP from Homebrew on macOS
    потом аналогично brew пакеты mysql , phpmyadmin
    Ответ написан
    Комментировать
  • Как можно реализовать запуск командной строки (скрипта) по нажатию кнопки?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    настройки безопасности в броузерах не позволяют запускать автоматом скаченный файл
    Ответ написан
    Комментировать
  • Возможно ли одним запросом разрешить null во всех столбцах?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    правь my.cnf по дефолту там стрикт моде закручен по самое не могу.
    алтер табле с аллоу нул поломает весь код. интгеры вместо нуля по дефолту и т п
    Ответ написан
    Комментировать
  • Как держать в таблице только последние 10 записей?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    странная задача. Может быть до 30 в минуту и больше. Блок Вы просматривали ?
    тут такой момент посетители сайтов бывают двух типов
    1) Случайно залетели в глубь сайта из поисковика (по прямой ссылке)
    средняя глубина просмотра 1,5 страницы
    2) Ведет себя как поисковый бот - смотрит кучу страниц

    Предложение Akina разумно для авторизованных пользователей
    В чистке по крону Дмитрий засада в случае редких просмотров. Как оставить именно не более 10 у каждого

    И общая проблема такого хранения в муське. Квери кеш идет лесом.

    Я бы задействовал хранение на стороне пользователя. И через аякс подтягивал блок по списку id
    Ответ написан
  • Как получить одним запросом товар, его категории и фильтры?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    group_concat есть такая функция
    GROUP_CONCAT(DISTINCT c.title ORDER BY c.title ASC SEPARATOR ' ') as category_title
    Ответ написан
    Комментировать
  • Как оптимизировать INSERT запросы в PDO(phpmyadmin)?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Комментировать
  • Как правильно организовать поиск одной строкой, не разбирая к какому полю относится поисковое слово?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    правильно ставьте OR AND и круглые скобки.
    LIKE это первое через что начинающий разработчик пробуют сделать поиск

    вторая стадия
    https://habr.com/ru/post/40218/

    А в конце прикручивает сфинкс или мантикору
    Ответ написан
  • Как получить все записи которые гарантируют 6 совпадений из 7?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Хмм. А зачем так издеваться над муской ?
    В таблице у Вас 3 в 7 степени записей 2178.
    А что такое 6 из 7. Не совпала одна цифра.
    Таких ситуаций 7 . Не совпала 1,2, и т.д.
    на ее месте значит два других из 3х значений.
    Получаем всего будет 14.

    Пишется в два вложенных цикла на любом ЯВУ.
    Или муська здесь принципиально и в один запрос ?

    Тогда юнион 7 запросов где в where пишите условия
    первая цифра не равна, остальные равны.
    и по очереди неравенство сдвигаете до последней цифры.

    15 результат совпали 7 из 7
    Ответ написан
    Комментировать
  • Нужно использовать триггеры или нет??

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    На ваш вопрос нет однозначного ответа.
    База данных сама по себе мало интересна. Тут нужно смотреть в комплексе.

    Кто-то пишет работу с базой через абстакции моделей (в расчете на то, чтобы было легко с муськи перейти на посгрес и т.д.)

    Коробочным решениям важен механизм автоматических обновлений (миграций)

    Опять же использование всяких гитов. Для кода версии проще отслеживать чем для структур базы данных.

    Еще такой факт пхпешников (питонистов и т.п.) больше чем хороших DBA

    А вот к каким выводам Вы придете уже только ваше решение. Может Вам наоборот нужно, чтобы в проекте никто кроме Вас не разобрался и не мог поддерживать.
    Ответ написан
    2 комментария
  • Как вывести несколько значений с одним ID в диапозоне?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    лучше сделайте нужный вывод на PHP или на чем там у вас бакенд

    через SQL получается слишком громоздно
    select 1 as fictiv_number, field1,.., field2 from dishes where id=val1
    union select 2 , field1,.., field2 from dishes where id=val2

    или делать хранимую процедуру
    Ответ написан
  • Можно ли использовать GROUP_CONCAT для больших запросов?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    возникает вопрос
    А на фига ему строка из миллиона слов готов,отгружен ?

    что делает модель ? собирает json / xml
    Может часть группировок вынести на уровень модели из запроса ?
    Ответ написан
  • Как подсчитать количество постоянных клиентов?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Учебная или реальная задача ?
    В реале я бы упростил до
    клиенты которые делали заказы 30 дней за последние 30 дней.

    дату время упрошаем до даты
    считаем кол-во уникальных дней с заказами у каждого клиента
    выбираем тех у кого оно равно 30

    А в учебных целях стоит освоить генерацию курсора с данными (даты без пропуска)
    Ответ написан
    Комментировать
  • Первый запрос в базу длится 2 секунды, а последующие 30 секунд, как?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    https://dev.1c-bitrix.ru/community/webdev/user/807...

    Создайте нужный индекс. По эксплайну вашего запроса видно что происходит full scan
    Ответ написан
    Комментировать