Итак, в нашей таблице более 90 столбцов. Это все данные от генератора постоянного тока (или двух) во время работы, обновляемые каждую минуту. Включает высокие, низкие и последние результаты за эту минуту, то есть 3–6 строк в минуту.
Прямо сейчас, если я хочу получить данные для поколения 0 за последнюю неделю, я используйте такой запрос:
Код: Выделить всё
SELECT voltage,current,timestamp,type FROM genset WHERE genID = 0 AND timestamp > '2024/11/20 11:43:00' AND timestamp < '2024/11/27 11:43:00' ORDER BY timestamp ASC;
Код: Выделить всё
while($row=mysqli_fetch_assoc($raw)) {
//parse and format the data
//...
}
Поэтому мой начальник хочет, чтобы это работало НАМНОГО быстрее. Чтобы улучшить воспринимаемую скорость, я разбил запрос на несколько более мелких частей и отобразил индикатор выполнения. Это устраняет ощущение «зависания», а также устраняет проблемы с максимальным временем выполнения PHP (которое я не могу изменить, что бы я ни делал). Но для устройства, которое находится где-то на вершине горы, это означает, что каждый POST увеличивает время задержки запроса пользователя.
Я думал, что mysqli_fetch_all() может решить проблему. Но оказывается, что это делает то же самое, что и цикл while! Так что это занимает столько же времени.
Конечно, я рассматривал вариант простого возврата $raw в JS, но я не знаю, способен ли JS вообще это проанализировать. Если это так, это было бы здорово. Я мог бы получить все данные — черт возьми, все данные для всех более чем 90 столбцов — и позволить клиенту анализировать их так, как им нравится.
Какой совет, ребята? Есть ли способ JS анализировать необработанные данные MySQLi? Есть ли более быстрый способ преобразовать эти данные в ассоциативный массив?
Подробнее здесь: https://stackoverflow.com/questions/792 ... etch-assoc
Мобильная версия