Перейти к содержимому

Фотография
- - - - -

Запрос к базе - выбрать правильный


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 2

#1 FiRеFоX

FiRеFоX

    Завсегдатай

    Топикстартер
  • V.I.P.
  • 43
    739 сообщ.

Отправлено 04 Март 2014 в 11:15

Как будет правильнее и быстрее? Результат запросов один и тот же.

Вариант 1: 

SELECT [параметры] FROM `table` WHERE (`id_login1` = $user_id OR `id_login2` = $user_id) AND `read` = 1

Вариант 2:

SELECT [параметры] FROM `table` WHERE (`id_login1` = $user_id AND `read` = 1) OR (`id_login2` = $user_id AND `read` = 1)

  • 0

Спонсор

#2 AngelGabriel

AngelGabriel

    И имя мне - легион

  • V.I.P.
  • 206
    778 сообщ.

Отправлено 04 Март 2014 в 19:14

Лучший sql запрос - это запрос, который не исполняется (с)

А если по теме. То могу предположить. Второй запрос, условие после ИЛИ не будет проверяться, если левый операнд вернет правду, хотя это до попы, в каждом запросе будет всегда минимум две проверки.
  • 0

#3 FiRеFоX

FiRеFоX

    Завсегдатай

    Топикстартер
  • V.I.P.
  • 43
    739 сообщ.

Отправлено 05 Март 2014 в 20:22

Сделал два индекса:

1. id_login1 + read

2. id_login2 + read

 

При втором запросе сработали оба индекса. Как сделать для первого запроса правильные индексы - хз.


  • 0



Похожие темы Свернуть

Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей