|
Тема |
MySQL и локване на таблици при сложна SQL заявка |
|
Автор | Ц++ (Нерегистриран) | |
Публикувано | 17.05.06 15:52 |
|
|
здравейте, забелязал съм следния проблем с локване на таблиците в MySQL.
за да не навлизам в подробности и същностите в моя случай ще опиша с един бърз пример, при който релацията е същата:
например: имаме отдели, служители и инвентар (да речем). релациите са 1 към много навсякъде (т.е. служител има отдел-ИД, инвентар има служител-ИД)
ако пусна следната SQL заявка, която да извади инвентара от даден отдел (т.е. принадлежащ на служителите в даден отдел) ще имаме следното:
select inventory.* from inventory
left join employee on inventory.employee_id=employee.employee_id
where employee.department_id=123
това търсещо в JOIN-натата таблица по поле установих че заключва таблиците (поне в MySQL 3.xx). Става въпрос за случаите когато таблицата invenotory е вече със стотици хиляди редове (тогава се забелязва) особено ако почнат повече юзъри да ръчкат по справката.
а в този момент в inventory и employee (в примера, който съм дал) не може да се прави нищо (insert/update/delete/etc).
решението е ясно за мен - в случая с примера - слагам department_id и в invenotory и малко тъпичко, но иначе заявката върви без да локва таблиците (така става само върху една таблица).
някой да може да даде съвет в такива случаи как е по-правилно да се процедира и по принцип, дали така разрешението е ОК, или да се търси чрез друг вид SQL заявки да се заобиколи ?
|
| |
|
|
|