Немного предыстории: (пропустите ниже, чтобы выделить жирным шрифтом, чтобы просто перейти к вопросу)
Я программировал на Python последние несколько месяцев, но явсе еще очень начинающий.Я знаю основы (циклы, операторы if, функции, классы и т. Д.), Но мне не хватает более тонких знаний (нотация big-o, как работают индексы и т. Д.).
У меня есть база данных sqlite, которую яхранил данные для проекта.В одной таблице, называемой бумагами, каждая строка состоит из статьи, которую я написал, вместе с классом, для которого она была, категорией (технология, художественная литература, технический документ и т. Д.) И рейтингом, связанным с ней (1-5).
Итак, моя таблица выглядит примерно так:
PID| Paper Name | Class | Category | Rating
1 | A Foo Bar Story: The study of X | Intro to Foobar | Term Paper, Science | 4
... (и т. Д.)
Я также создал еще одну таблицу под названием Classes, которая выглядит примерно так:
Class Name | ClassURL | Teacher Email | Ratings | Vote count
Intro to Foobar | www.foobar.com/itf | xyz@zyx.com | 240 | 100
... (и т. Д.)
Где рейтинг класса - это рейтинг, разделенный на количество голосов.
Мой вопрос: : Прямо сейчасВ настоящее время я просто обновляю поле оценок и поле подсчета голосов, когда я оцениваю статью, добавляя этот рейтинг для статьи в «рейтинги» и добавляя один к «подсчету голосов», используя UPDATE classes SET ratings=(?), vote_count=(?) where classname=(?)
(с переменными).
В то время я думал, что это будет менее сложно, чем сделать SELECT
всех бумаг в бумажном столе (что, допустим, может быть безграничным) WHERE class= "Whatever"
, затем сложить их все, а затем разделить насчет.Однако чем больше я думаю об этом, тем больше я не уверен в этом.Может ли кто-нибудь указать мне, какой из них будет быстрее по большой базе данных и почему?