ФорумРазработкаБазы данных → Помогите со структурой небольшой базы данных.

Помогите со структурой небольшой базы данных.

  • Cos

    Сообщения: 41 Репутация: N Группа: Кто попало

    Spritz Ноя. 29, 2010, 10:54 д.п.

    Всем привет.

    Хочу реализовать несложную вещь - на сайте рамещаются заметки, которые можно комментировать (без регистрации).

    У меня идея такая - одна таблица содержит заметки, вторая таблица содержит все комментарии. В таблице комментариев есть поле, содержащее Id статьи, к которой собственно этот комментарий. И когда нам нужно вытащить все комментарии к какой-либо статье, мы просто вытаскиваем все, у которых поле "Id статьи" == тому, которое нам нужно.

    Но я опасаюсь, что с разрастанием сайта это дело начнёт тормозить, ведь в одной таблице содержатся все-все комментарии ко всем статьям и вероятно начнёт со временем притормаживать поиск по этому Id статьи.

    Скажите, насколько оправданы мои опасения и какие есть лучшие способы реализации этого несложного "механизма".

    Спасибо!
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz Ноя. 29, 2010, 11 д.п., спустя 6 минут 17 секунд

    связанные поля - проиндексировать. все что во WHERE
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz Ноя. 29, 2010, 11:12 д.п., спустя 11 минут 54 секунды

    Примерно так как ТС описал устроены форумы. Есть накладные расходы при большом количестве коментов. Разбиение на страницы работает через LIMIT, это не бесплатная операция. Фактически сервер проматывает все записи от начала до нужной страницы. Так что опасения разумные, теоретически.
    Судя по форумам, это не смертельно :) Индексы помогают.
    ιιlllιlllι унц-унц
  • Cos

    Сообщения: 41 Репутация: N Группа: Кто попало

    Spritz Ноя. 29, 2010, 11:20 д.п., спустя 8 минут 31 секунду

    Можно подробнее что вы имеете ввиду под индексированием?
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz Ноя. 29, 2010, 11:24 д.п., спустя 4 минуты 7 секунд

    там где делаешь БД, для нужного поля указываешь PRIMARY_INDEX_UNIQUE
    в твое случае INDEX
  • Cos

    Сообщения: 41 Репутация: N Группа: Кто попало

    Spritz Ноя. 29, 2010, 11:44 д.п., спустя 19 минут 35 секунд

    Отлично, спасибо!

    У меня вот ещё была идея например когда будет больше скажем 5к статей завести ещё одну таблицу и комментарии для статей 5к - 10к записывать уже в неё (ну и так далее). И соответственно добавить if() для выбора правильной таблицы при запросе комментариев. Тогда при запросе sql будет копаться не в 10k+ записей, а только в 5k.

    Только как-то это слишком через одно место получается.
    Спустя 90 сек.
    Тогда при запросе sql будет копаться не в 10k+ записей, а только в 5k.

    вернее в комментариях не для 10k+ записей, а в комментариях для 5k записей
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz Ноя. 29, 2010, 11:44 д.п., спустя 23 секунды

    комментов все равно не будет слишком много, потому я бы так не делал

Пожалуйста, авторизуйтесь, чтобы написать комментарий!