Python: RE против Query - PullRequest
4 голосов
/ 15 ноября 2010

Я создаю веб-сайт с использованием Django, и этот веб-сайт использует блоки, которые включены для определенной страницы.

Сейчас я использую текстовое поле, содержащее пути, в которых включен блок. Когда запрашивается страница, Django извлекает все блоки из базы данных и повторно выполняет поиск в TextField.

Однако мне было интересно, не лучше ли использовать отдельную таблицу БД для блоков / путей, где каждая строка содержит один путь и ссылку на блок, с точки зрения издержек.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2010

Отдельная таблица БД, безусловно, является «правильным» способом сделать это, потому что mysql должен отправлять все данные из ваших полей TEXT каждый раз, когда вы запрашиваете.Когда вы добавляете больше строк и поля TEXT становятся больше, вы начнете замечать проблемы с производительностью и, в конечном итоге, вывести сервер из строя.Кроме того, вы сможете использовать VARCHAR и добавлять уникальный путь к путям, что ускоряет поиск.

1 голос
/ 16 ноября 2010

Я не совсем знаком с Django, но если я правильно понимаю ситуацию, вам следует использовать таблицу.

Фактически это именно тот вид использования, для которого разработано и оптимизировано программное обеспечение БД.

Не беспокойся. Это будет на самом деле быстрее.

Выполняя поиск самостоятельно, вы пытаетесь реализовать часть логики БД самостоятельно. Весело, конечно, но не так быстро. :)

Вот несколько хороших ссылок по проектированию базы данных:

http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html

http://en.wikipedia.org/wiki/Third_normal_form

Надеюсь, это поможет. Удачи. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...