Я пытаюсь ускорить свое приложение Django.Одна проблема, которую я замечаю, заключается в том, что обратный поиск взаимосвязей с внешним ключом не кажется эффективным.
Например, представьте себе сценарий, в котором учитель может иметь много учеников, но у ученика может быть только один учитель.,Можно назначить ForeignKey для ученика, который связывает каждого ученика с учителем.В таблице SQL для ученика столбец с именем teacher_id
отслеживает, какой учитель имеет ученик.
При запросе, у которого у ученика есть учитель X, все строки таблицы ученика должны быть отсканированы, чтобы получить полный набор запросов., что кажется неэффективным.
Что если я запрограммирую Django так, чтобы каждый раз, когда учитель назначался ученику, запись в таблице учителя, скажем, student_id_list
обновлялась;Идентификатор учащегося будет добавлен в список других идентификаторов учеников, разделенных запятыми.
Таким образом, когда запрос ищет всех учеников учителя, я могу просто использовать этот список учеников, разделенный запятыми.Идентификаторы для поиска учеников, которые являются быстрыми (идентификатор является первичным ключом) и эффективными (не все строки таблицы учеников должны сканироваться).
Столбец teacher_id в таблице учеников все еще будет использоваться;данные будут просто храниться дважды.
Это сделает мое приложение быстрее?Спасибо!