Нужен совет по проектированию системы - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь спроектировать страницу так, чтобы она работала быстрее, а также стараюсь избегать дублирования.

По сути, я собираюсь загрузить 3 набора контактов пользователя.Деловые контакты, личные контакты и специальные контакты, которые могут быть как деловыми, так и личными.Поэтому, по сути, я буду выполнять эти 3 запроса:

SELECT stuff FROM contacts WHERE userId = '$userId' AND type = 'business'

SELECT stuff FROM contacts WHERE userId = '$userId' AND type = 'personal'

SELECT stuff FROM contacts WHERE userId = '$userId' and isSpecial = 1

Эти контакты будут использоваться javascript для заполнения определенных <div>s на странице и будут использоваться при поиске контактов на странице.

Имеет ли смысл загружать только деловые и личные контакты, а затем перебирать их через javascript и использовать javascript для создания 3-го списка специальных контактов, в основном, где isSpecial имеет значение 1?

Или было бы лучше получить 3 набора по отдельности, используя запрос MySQL, и передать их в javascript в виде 3 отдельных наборов с самого начала?

Или я должен получить только 1 набор контактов из MySQL какпока userId = '$currentUser' и сортировать их в отдельные списки через JavaScript при загрузке страницы?(В любом случае я буду перебирать все контакты на странице загрузки, чтобы заполнить их <div> s, возможно, я мог бы также отсортировать их по 3 отдельным спискам, пока я перебираю их?)

Илидругой подход будет лучшим?

Моя задача - сделать все как можно быстрее для пользователя, а также минимизировать нагрузку на сервер базы данных.

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Вы не можете сделать:

ВЫБЕРИТЕ вещи из контактов, ГДЕ userId = '$ userId' И type = 'business' ИЛИ ​​type = 'personal' ИЛИ ​​isSpecial = 1

Тогда у вас есть только один вызов в базу данных.

Вы также можете изменить SELECT, чтобы выбрать только те поля, которые вам нужны. Кроме того, измените свой SQL-запрос, чтобы база данных сортировала контакты по вашему усмотрению.

Обновление Хорошо, просто идея, при загрузке страницы вы делаете SELECT для первых, например, 20 контактов (до), затем запускаете javascript для их отображения или чего-то еще, затем, когда вы получаете событие, что страница полностью загружена, вы затем делаете оператор SELECT для оставшихся строк если есть)

1 голос
/ 30 июня 2011

IMO было бы лучше, если бы вы использовали MySQL для получения контактов отдельно, поскольку MySQL сравнительно быстрее.Также на всякий случай, если JavaScript отключен в браузере пользователя или если он использует мобильный браузер, вы не сможете разделить контакты.

РЕДАКТИРОВАТЬ

Как вы указали, javascript является минимальным требованием для вашего сайта, тогда лучше всего будет использовать один переход с одним запросом кполучить данные и разделить с помощью JS.

1 голос
/ 30 июня 2011

Сделайте только один запрос, загрузите в него и «business», и «personal», а затем найдите «isSpecial». (Предполагается, что не о чем беспокоиться.)

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