Mysql
 sql >> база данни >  >> RDS >> Mysql

как да минимизирам запитването си?

Вашите запитвания нямат смисъл. Първо избирате ОТДЕЛНИТЕ дати (игнорирайте часа) от данните. След това за всяка дата вие... избирате всички данни за тази дата?

Защо просто не задействате една заявка

SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc

Ако искате само 5 дати и масата е голяма, има две възможности.

1, Никога няма пропуски в датите, можете да използвате

SELECT *, DATE(added) as DateNoTime
FROM tb_videos
WHERE added >= ADDDATE(CURDATE(), interval -4 days)
ORDER BY added desc

2, Ако може да има пропуски, напр. нищо за вчера, така че трябва да показва последните 5 дни, които имат записи

SELECT *, DATE(added) as DateNoTime
FROM (
    select min(DateNoTime) as MinDate
    from
    (
        select DATE(added) as DateNoTime
        FROM tb_videos
        order by DateNoTime desc
        limit 5
    ) x) y, tb_videos
WHERE added >= y.MinDate
ORDER BY added desc

Това ви дава всички данни. В PHP следете DateNoTime. Всеки път, когато това се промени, вие сте в различна дата, което преди това би ви накарало да задействате друга заявка. В противен случай кодът трябва да се промени само минимално.

Непроверен PHP код

$result = mysql_query('
    SELECT *, DATE(added) as DateNoTime
    FROM (
        select min(DateNoTime) as MinDate
        from
        (
            select DATE(added) as DateNoTime
            FROM tb_videos
            order by DateNoTime desc
            limit 5
        ) x) y, tb_videos
    WHERE added >= y.MinDate
    ORDER BY added desc
');
$prevdate = NULL;
foreach($result as $rst)
{    
    if($prevdate!=$rst=>DateNoTime) {
        // do something, like printing out a header for each new date
        $prevdate=$rst=>DateNoTime;
    }

    // do something with the record
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL заявката получава стойност, разделена със запетая от основната таблица с подробности

  2. Разлика между нормален ajax и дълга анкета

  3. как да изброя колона в mysql на nodejs с модул mysql

  4. Добавете липсващ месец в резултата от заявката

  5. Как да получите идентификатор на избран елемент от таблицата в php