Это звучит как лучший способ, учитывая спецификации / требования, которые вы изложили.
Другим способом является промежуточный шаг. Если у вас будет огромный объем трафика (в противном случае это не принесет никакой пользы, но, наоборот, может усложнить / замедлить процесс), добавьте еще одну таблицу, в которую записывается последний раз, когда набор данных извлекался и жесткий файл (скажем, XML), который, если «последний раз» считался слишком давно, создается из нового запроса, этот XML затем передает результат, возвращенный пользователю.
Итак:
1.Javascript вызывает скрипт PHP (AJAX)
2.PHP таблица пингов, которая содержит данные о времени последнего вывода полностью
3.Если время слишком велико, повторяется «основной» запрос и файл XML генерируется заново из выходных данных.
Иначе пропустить до 4
4. Извлеките файл XML и выведите его в соответствии с требованиями для возвращенного AJAX