Оптимизируем запрос к Mysql

oopros

Новичок
Есть код
Код:
$i=0;
$result=mysql_query("select * from table");
while($row=mysql_fetch_array($result))
{
if (date('d.m.Y',$row['time'])==date('d.m.Y'))$i++;
}
C помошю которого высчитывается количество записей в таблице за текущиий день. Помогите на примере составить оптимальный код, чтобы не тянуть все данные из таблицы.
Заранее спасибо!
 

oopros

Новичок
да, записи должны быть подходящие.
в колонке time результат работы функции time();
Например вот 1400239375 (подходящая должна быть)
 

oopros

Новичок
Вышел из ситуации таким образом:
Код:
$today  = mktime(0, 0, 0, date("m")  , date("d"), date("Y"));
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));

$sql="select * from table where time>'".$today."' and time<'".$tomorrow."'";
$res=mysql_query($sql);
$i = mysql_num_rows($res);
Таким образом отбираются только нужные записи и не нагружается база
 

oopros

Новичок
keltanas,а в чем преимущество? ведь в моем предложенном вариант тоже должен быстро срабатывать. Учитывая что результат у $i будет до 100
 

keltanas

marty cats
oopros, да никаких. Подумаешь, переслать в скрипт из базы 1 число, или 100 записей? Да одна фигня, конечно. Особенно, если твой скрипт никто кроме тебя не будет использовать.
 

oopros

Новичок
а, вот оно что. Дело в том что пытаюсь использовать этот запрос
Код:
SELECT count(id) FROM table WHERE table.time  > NOW() - INTERVAL 1 DAY AND table.time < NOW()
Выдает результат 0, название таблицы и полей ставлю нужные.
Может что-то неправильно написали?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У вас типы точно совпадают? time и now() как сравниваться будут?
 

oopros

Новичок
ну результат работы time - это unixtime и now вроде как для unixtime или я не прав?
 

keltanas

marty cats
oopros, так оптимизируй под себя, и избавься от использования расширения mysql
PHP:
<?php
$pdo = new PDO(...);
$stmt = $pdo->prepare("select count(id) from `table` where `time`>? and `time`<?");
$stmt->execute([$today,  $tomorrow]);
var_dump($stmt->fetchColumn());
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я просто с планшетки, решил уточнить момент, гуглить неудобно... Если уверены, то ок
 

keltanas

marty cats
тип поля text, демаете в этом проблема?
Если отладка это процесс устранения ошибок в программе, то программирование, стало быть, есть процесс их создания.
Это про тебя )))

Дату хранят в специальных для этого типах.
Те, кто не боятся боли, хранят её integer
Но ты со своим text сделал эту пятницу )))
 

keltanas

marty cats
если все еще хочешь хранить в качестве даты метку времени, возвращаемую функциями time()/mktime(), то тебе INT
но, как уже упоминалось выше - это только для очень смелых. А программисты попроще используют DATETIME или DATE
 

oopros

Новичок
изменил
если все еще хочешь хранить в качестве даты метку времени, возвращаемую функциями time()/mktime(), то тебе INT
но, как уже упоминалось выше - это только для очень смелых. А программисты попроще используют DATETIME или DATE
тип на int, но запрос по прежнему не работает. В чем может быть дело?
 
Сверху