1. Меняется/Зависит ли как-то скорость записи в таблицу БД от количества записей в таблице?
2. Меняется/Зависит ли как-то скорость записи в таблицу БД от количества таблиц в БД?
3. Меняется/Зависит ли как-то скорость записи в таблицу БД от количества записей в соседних таблицах БД?
Почему не работает функция CURRENT_DATE() в триггере?
CREATE TABLE Sotrudnik (
.....
Date_Prinyatiya DATE DEFAULT (CURRENT_TIMESTAMP),
.....
);
почему этот запрос просматривает так много записей?
Мне возвращается первые 3 строки.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TRIGGER tr_users_bi
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
DECLARE allowed_created_at DATETIME;
DECLARE error_message_text VARCHAR(64);
SELECT MAX(created_at) + INTERVAL 12 HOUR INTO allowed_created_at
FROM users
WHERE username = NEW.username;
IF NEW.created_at < allowed_created_at THEN
SET error_message_text = CONCAT('Регистрация возможна не ранее ', allowed_created_at);
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = error_message_text;
END IF;
END
Например, если какие-то строки смогут загрузиться, а какие-то - нет, то бд будет повреждена.
Можно ли одним запросом вывести все товары и свойства которые соответствуют данному товару
id товара, название, свойство, значение......все свойства, значения.
1; Ручка; Цвет; Синий; Цена; 10
2; Нож; Материал; Цена; 200; Рукоятка; Дерево; Фото; Есть;
WHERE `value` LIKE CONCAT('%', CHAR(92), CHAR(92), '%')
если `prop_id` in (1,2,3,...) штук 20, может быть и больше, запрос выполняется 18 секунд, что прям совсем много.
CREATE TEMPORARY TABLE criteria (prop_id INT PRIMARY KEY) ENGINE = Memory
SELECT prop_id FROM (VALUES ROW(1), ROW(2), ROW(3), ...) criteria (prop_id);
select `product_id`, count(*) as `cnt`
from `product_prop`
NATURAL JOIN criteria
group by `product_id`
order by `cnt` desc
Есть ли другие способы как реализовать мою задумку или оптимизировать уже имеющийся?
Как сделать в главном конфиге сервера MySQL относительные пути?
Хотелось бы примерно такое (добавить переменную %BASEDIR%)
Мне нужно найти запись на который у пользователя где у пользователя 1 накопится допустим 30 баллов, это запись id=5.
WITH cte AS (
SELECT *, SUM(point) OVER (ORDER BY point_lifetime) cum_sum
FROM tablename
WHERE user_id = 1 -- у пользователя 1
)
SELECT *
FROM cte
WHERE cum_sum >= 30 -- накопится 30 баллов
ORDER BY point_lifetime LIMIT 1;
SELECT * FROM table1 LEFT JOIN table2 USING (column)
UNOIN ALL
SELECT * FROM table1 RIGHT JOIN table2 USING (column) WHERE table1.column IS NULL
SELECT *
FROM (
SELECT DISTINCT column FROM table1
UNION ALL
SELECT DISTINCT column FROM table2
) AS table0
LEFT JOIN table1 USING (column)
LEFT JOIN table2 USING (column)
Если в ячейку
Если в ячейку типа TEXT не влазят данные, MySQL автоматически увеличит её до необходимого размера или выдаст исключение?
Как сделать "резиновую" ячейку в таблице?
Как составить ассоциацию squelize один к одному?