powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql WHILE loop
3 сообщений из 3, страница 1 из 1
mysql WHILE loop
    #39427034
DieTry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Помогите решить такую задачку.
Необходимо отправить сообщение всем пользователям (с исключениями) только через mysql.

Допустим у нас есть таблица USERS, там id, name и есть таблица MESSAGES там senderid, recipientid, message.
Вот необходимо заинсертить в таблицу messages все id из USERS с одним recipient (отправка от админа) и message.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DELIMITER //
CREATE PROCEDURE SENDMESSAGE (in fromid INT, in message VARCHAR(45))
BEGIN
	DECLARE countid INT;
	DECLARE istart INT;
	DECLARE toid INT;
	SET countid = (SELECT COUNT(*) FROM users);
	SET istart = 0; 
	WHILE istart < countid DO
		SET toid = (SELECT id FROM users ORDER BY id LIMIT istart, 1);
		INSERT INTO messages VALUES (fromid, toid, message);
		SET istart = istart + 1;
	END WHILE;
END //



Смысл такой, что отправляется от 1 аккаунта всем пользователям. Поэтому fromid задает при вызове процедуры, а остальное считается.
Но как поведет себя на большой таблице? В таблице MESSAGES уже больше 15 млн записей, а в таблице USERS около 120 тысяч. Есть ли более быстрое решение?
...
Рейтинг: 0 / 0
mysql WHILE loop
    #39427128
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
INSERT INTO messages SELECT 1, id, 'Всем привет!' FROM users
...
Рейтинг: 0 / 0
mysql WHILE loop
    #39427193
DieTry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Блин. Как-то неловко себя чувствую) а ведь реально нафиг я писал процедуру и в цикл))) все проще и одной строчкой...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql WHILE loop
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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