Предотвращение вызовов базы данных путем жесткого кодирования данных в сценарий
У меня есть примерно 1000 строк (4 поля) в базе данных MySQL. Я точно знаю, что данные в базе данных меняются не очень часто (это GPS-координаты). Лучше ли мне вызывать эту информацию из базы данных каждый раз, когда загружается соответствующий скрипт, или лучше для меня "жестко закодировать" данные в скрипте, а когда я внесу изменения в базу данных, просто обновить жестко закодированные данные тоже?
Мне интересно, если это улучшает производительность, но часть меня думает, что это не лучшая практика.
Спасибо
2 ответа
Учитывая тот факт, что изменения могут происходить один или два раза в месяц, а также тот факт, что 0,0063 секунды не очень много (по крайней мере, с моей точки зрения, если это будет вопрос жизни или смерти или очень важная акция Уолл-стрит) данные, которые были бы другим вопросом), я рекомендую вам использовать SQL. Конечно, если вы выполняете запрос только один раз за выполнение скрипта.
Действительно, это может повысить производительность за несколько миллисекунд, если вы жестко закодируете данные в своем скрипте. Но задайте себе вопрос: сколько дополнительной работы необходимо для сохранения жестких данных? Если вы действительно хотите быть в этом уверенным, сделайте версию сценария, в которой вы жестко закодируете данные, выполните сценарий 1000 раз и измерите разницу во времени. (Тем не менее, просто выполнение этого теста, вероятно, займет больше времени, чем сэкономит...)
Если ваш сценарий запускается 5000 раз в день, и каждый раз, когда SQL требует дополнительных 0,01 секунды по сравнению с жестко заданными значениями, это в сумме составляет 50 секунд в день для ваших пользователей. Однако для каждого пользователя они, скорее всего, не заметят никакой разницы.
Жесткое кодирование координат в сценарии не очень хорошая идея.
Я бы прочитал 1000 координат при запуске в массив, либо из базы данных SQL, либо из файла.
Но делайте это чтение только один раз при запуске, а не на каждом этапе вычисления.