Ответы пользователя по тегу Базы данных
  • Одна или несколько баз данных?

    orlov0562
    @orlov0562
    I'm cool!
    Моё мнение, хранить все в 1ой базе, т.к. данные связанные. 100 млн записей - это не много, особенно если бд грамотно спроектирована, есть нужные ключи и все такое. Разносить будет смысл, только когда упретесь в производительность железок и не будет другой возможности убрать проблемы производительности, кроме как разделить бд на разные сервера, но до таких проблем еще надо постараться добраться.
    Ответ написан
    Комментировать
  • Как проверить успешность записи в mysql?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Проверяй возвращаемое значение функцией mysql_query
    $res = mysql_query(...)
    if ($res === FALSE) {
        die( mysql_error() );
    }


    php.net/manual/ru/function.mysql-query.php
    Для запросов SELECT, SHOW, DESCRIBE, EXPLAIN и других запросов, возвращающих результат из нескольких рядов, mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.

    Для других типов SQL-запросов, INSERT, UPDATE, DELETE, DROP и других, mysql_query() возвращает TRUE в случае успеха и FALSE в случае ошибки.

    Полученный дескриптор результата нужно передать в функцию mysql_fetch_assoc() или любую другую функцию, работающую с результатами запросов.

    Используйте mysql_num_rows() для выяснения количества рядов в результате SELECT-запроса или mysql_affected_rows() для выяснения количества обработанных рядов запросами DELETE, INSERT, REPLACE и UPDATE.

    mysql_query() также завершится с ошибкой и вернет FALSE, если у пользователя нет доступа к какой-либо из таблиц, фигурирующих в запросе.
    Ответ написан
  • Как спроектировать БД для публикации новостей?

    orlov0562
    @orlov0562
    I'm cool!
    1) У каждого пользователя, поле в таблице, в которое записывать SELECT COUNT WHERE user_id в момент обновления им новости (добавил/удалил/изменил статус). При простых условиях, можно сделать тригер в бд, который это будет делать сам. Не забудь сделать индекс по user_id

    2) Да, лучше кешировать это значение. Делается это разными способами, но смысл один - снизить кол-во вызовов SELECT COUNT

    SELECT COUNT(id) и даже SELECT COUNT(id) WHERE user_id = на небольшой посещалке не самая тяжелая операция.. Однако, если ты например решишь отсортировать пользователей по кол-ву новостей, например выбрать top 50, то имея доп. поле с кол-вом новостей, сделать это будет гораздо проще..

    В общем, ты правильно мыслишь.
    Ответ написан
    1 комментарий
  • Как сделать ветвление в хранимых процедурах в MySQL?

    orlov0562
    @orlov0562
    I'm cool!
    1) используй SHOW COLUMNS FROM .. LIKE ..
    dev.mysql.com/doc/refman/5.7/en/show-columns.html

    2) попробуй LOOP
    https://dev.mysql.com/doc/refman/5.6/en/loop.html
    и обычный IF ELSE внутри
    Ответ написан
    Комментировать
  • Нет подключения к базе данных?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    тут тоже похоже ошибка:

    "SET NAME 'utf8'".DB_CHAR

    должно быть

    "SET NAMES '".DB_CHAR."'"
    Ответ написан
    1 комментарий