Должен ли я искать контент в базе данных по идентификатору или имени? - PullRequest
1 голос
/ 28 августа 2009

У меня есть CMS, которая имеет два метода для запроса содержимого. Тот, который запрашивает по id, а другой - по имени контента.

ContentManager.Select(12);

или

ContentManager.Select("Content Name");

Способ, которым я вижу первый, будет быстрее, потому что идентификатор является индексом и не требует сравнения строк. Хотя со вторым гораздо проще работать.

Я работал по причинам технического обслуживания со вторым. Но если я изменю имя контента, выбор, очевидно, больше не будет работать. Но идентификатор должен быть только на уровне базы данных и не виден в формах CMS.

Редактировать: Кроме того, если контент будет удален и вставлен заново, будет работать выбор строки, а выбор идентификатора не будет.

Я не могу прийти к общей точке зрения между этими двумя подходами.

Ответы [ 3 ]

1 голос
/ 28 августа 2009

Зависит от того, какой из них проиндексирован ... Так что, да, вы правы, в этом случае используйте идентификатор ... Если есть необходимость также выполнять поиск по имени, добавьте другой индекс, используя имя ..

1 голос
/ 28 августа 2009

Выбор по первичному ключу дает наилучшую возможную производительность, но это не всегда ваша единственная мотивация. Возможно, вы сможете добавить индекс к столбцу имени контента, в зависимости от его ширины и вашего уровня чтения / записи (и в зависимости от того, какой контроль над базой данных у вас есть, я полагаю).

Вердикт, если у вас есть идентификатор, выберите по идентификатору, если вы этого не сделаете, и это не ухудшает вашу производительность, не парьтесь, используя имя контента.

0 голосов
/ 28 августа 2009

идентификаторы обычно лучше всего работают в базах данных. Тем не менее, вы находитесь в зависимости от CMS, она может хранить как те, что в массиве, так и использовать один и тот же оператор выбора. Кто знает? просмотрите исходный код и посмотрите, что происходит.

Что бы вы ни делали, придерживайтесь одного стиля во всем вашем коде.

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