[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: где лучше обрабатывать?
123456
Необходимо проверить, или запись проходит под требования.

как правильнее, выбирать по ключу запись из таблица, а потом сравнивать все параметры, или же выполнять все условия сразу же в запросе?

ВАРИАНТ 1
$sql = $mysqli->q("SELECT `stat`, `type`, `id_user`
FROM `table`
WHERE `id` = "
. $id ."
LIMIT 1"
);

if (!$sql->num_rows)
exit();

$bd = $sql->fetch_assoc();

if ($us->i('id') != $bd['id_user'])
exit();

if ($bd['stat'] != 0)
exit();


ВАРИАНТ 2

$sql = $mysqli->q("SELECT `type`
FROM `table`
WHERE `id` = "
. $id ." AND
`id_user` = "
. $us->i('id') ." AND
`stat` = 0
LIMIT 1"
);

if (!$sql->num_rows)
exit();



В таблице более 1.500.000 записей
Kusss
лучше в запросе . 2 вариант.
Странно что id у тебя не уникальная .
123456
Kusss
id уникальный
Kusss
Меня смутил лимит в запросе. Лишний он.
inpost
Kusss
Это ещё почему для второго запроса? Он лишний только для первого, второй не гарантирует уникальность записи, если не используется PRIMARY или UNIQUE составной индекс.

К тому же первый запрос может ответить: "данные есть, статус не тот", а второй - нет.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Kusss
А есть вариант, что будет больше одной записи из базы, Зачем тут LIMIT 1 ?
123456
В данном случае, интересует вопрос, что быстрее выполнится с минимальными затратами ресурсов?
Kusss
Сам посмотри
$start_time = microtime(true);
$start_memory_usage = memory_get_usage();

// Тут свой код

$exec_time = microtime(true) - $start_time;
$end_memory_usage = memory_get_usage();
$total_memory_usage = $end_memory_usage - $start_memory_usage;
echo '<br>Время выполнения: '.round($exec_time,2).' мс';
echo '<br>Расход памяти: ' . number_format($total_memory_usage, 0, '.', ',') . ' байт';

Valick
123456, а вообще так, если прикинуть детостроительный орган к носу, свои собственные умозаключения имеются? Вот даже просто глядя на код какой вам вариант больше нравится?
___
про эти варианты (борьбу добра и зла) разве что оооооочень ленивый может пройти мимо не уперевшись лбом, шатаясь на просторах интернета. Надо у жены спросить, она небось и то 100% находила такую инфу на своих кулинарных сайтах.

_____________
Стимулятор ~yoomoney - 41001303250491
M-A-X
выполнится с одинаковой скоростью
inpost
M-A-X
Аргументируй с учётом разных вариаций индексов.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
M-A-X
>Аргументируй с учётом разных вариаций индексов.
Хватит и первичного индекса.
Остальные и не нужны.
inpost
В первом варианты ты будешь гонять данные между MySQL и PHP, во втором данные не будут передаваться в случае, если условие не проходит. Передача данных будет занимать некий объем в памяти. Отсюда скорость в любом случае не будет одинаковой.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
M-A-X
Оптимизация на спичках.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.