Понятное дело, выводы основываются на том, что я видел. Соответственно, могут быть неточности.



Query: SELECT *, if(rule_id,1,0) as closed

FROM firewall

WHERE (

(date_start<=1166552489 AND date_end>=1166552489)

OR

date_end=0

)

AND ( username="DukeSS" )

ORDER BY rule_id DESC



в этом запросе: пихать в одну из колонок (username) имя пользователя, а не его числовой идентификатор - расточительство. Если это, правда, как раз не выборка из таблицы соответсвия чисел именам.



Query: select shortname,username,userid,title from journal where shortname="dukess"

То же самое. Хотя оговорка та уже не действует.



Ещё в нескольких запросах идёт выборка по именам, и, в следующем же - по числам.



Может, имеет смысл вообще узнавать по имени номер пользователя в начале сессии, а затем пользоваться только им. Нагрузку удастся сократить.