зачем функции DrawTableNames и DrawTableSites? где они используюсться? что попадает в циклы for($i=0;$i < numrows;$i++)
? может там 1 000 000 000 000 строк?
следующий момент USING(item) item надо пологать есть в обех таблицах. проверьте одинкового ли он типа и размера в обеиз таблицах которые джойните.
и да таблицы диких размеров сторяться исключительно долго. есть вариант как это дело ускорить но незначительно. передавать данные в json. JS на стороне пользователя кушает его и строка за строкой асинзронно формирует табличку в миллиард строк. можно еще отложенную загрузку присобачить с LIMIT тогда все точно будет быстро работать.