|
Тема |
MySQL таблици с релация и оптимизация на INSERT-и? |
|
Автор | Чaвдap (Нерегистриран) | |
Публикувано | 07.06.05 16:08 |
|
|
Как може да се от оптимизира заявка към MySQL за следната ситуация:
WEB система ползваща MySQL. WEB системата има 4 отделни потребителски интерфейса. На всеки интерфейс може да има съобщение от администратора към потребителите. Дадено съобщение може да се отнася само за един интерфейс, но може да се отнася за два три, дори за всички четири интерфейса. За целта са проектирани следните две бази таблици, между които има релация– user_messages и user_interfaces.
user_messages има в структурата си две полета id- тип int unsigned, уникално, auto_increment и message – тип text. Във всеки ред от тази таблица се съдържа уникален номер на съобщението (полето id) и текста на самото съобщение (полето message).
Другата таблица user_interfaces е изградена от две полета: message_id – тип int unsigned и полето и interface - тип – enum (1,2,3,4). Във всеки ред от тази таблица се съдържа номер на съобщението (полето message_id), стойността на това поле отговаря на даден номер от полето id в таблицата user_messages (чрез това поле се осъществява релацията между двете таблици). В другото поле от таблицата interface се съдържа номера на интерфейса от 1 до 4. Така, ако дадено съобщение важи и за четирите интерфейса в таблицата user_interfaces ще имаме четири записа.
WEB системата на администратора позволява да въвежда съобщения и да избира за кой интерфейс да важат. Скрипта обслужващ тази система първо с един INSERT въвежда съобщението в полето message на таблицата user_messages, a MySQl си генерира автоматично числото в полето id. След това се използва MySQL функцията mysql_insert_id() за да се определи id стойността, след което с извлечената стойност и номерата на дадените интерфейси се въвеждат в таблицата user_interfaces с нов INSERT.
Как може тази задача да се оптимизира – по малко MySQL команди и по-малко време за изпълнение ?
Благодаря
|
| |
|
|
|