Итак, я недавно взял на себя обслуживание внутренней системы управления контентом, и оптимизация баз данных не является моей областью знаний.
Во всяком случае, несколько вещей выпало мне на глаза, когда я просматривал код.
PHP-код - это немного "спагетти с фрикадельками" без комментариев.
Но самое главное: насколько я могу судить, оригинальный программист решил полностью отказаться от объединения таблиц в коде базы данных (как неявном, так и явном).
Например, вот процесс отображения столбца страницы:
Получить список элементов из базы данных
Для каждого элемента вызовите подпрограмму для проверки разрешений на отображение, а в случае успеха вызовите другую подпрограмму для получения html-данных элемента.
Каждая из подпрограмм фактически вызывает отдельный запрос для каждого элемента. И я полагаю, что этап разрешений включает запрос двух отдельных таблиц.
Производительность на самом деле не является проблемой в данный момент, и меня не просили разбираться с этим. Хотя запросы страниц немного медленны, на мой взгляд.
Стоит ли пытаться переписать материал SQL? Я думаю, что в конечном итоге повышение удобства обслуживания будет стоить того, и это облегчит мне задачу, если масштабируемость станет проблемой в будущем.
Или все не так плохо, как я думаю? Может быть, я просто слишком остро реагирую. Мнение эксперта будет оценено.