Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

làm thế nào để giảm thiểu truy vấn của tôi?

Truy vấn của bạn không có ý nghĩa. Trước tiên, bạn đang chọn ngày DISTINCT (bỏ qua thời gian) từ dữ liệu. Sau đó, đối với mỗi ngày, bạn .. chọn tất cả dữ liệu cho ngày đó?

Tại sao bạn không chỉ kích hoạt một truy vấn

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

Nếu bạn chỉ muốn có 5 ngày và bảng lớn, có hai khả năng.

1, Không bao giờ có khoảng cách về ngày tháng, bạn có thể sử dụng

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

2, Nếu có thể có khoảng trống, ví dụ:không có gì cho ngày hôm qua nên nó phải hiển thị 5 ngày qua có hồ sơ

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

Điều này cung cấp cho bạn tất cả dữ liệu. Trong PHP, hãy theo dõi DateNoTime. Bất cứ khi nào điều đó thay đổi, bạn đang ở một ngày khác, điều này trước đây có thể khiến bạn kích hoạt một truy vấn khác. Nếu không, mã sẽ chỉ thay đổi nhỏ.

Mã PHP bỏ chọn

$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. chuỗi kết nối mySQL thông qua đường hầm SSH mà không cần mật khẩu

  2. Làm cách nào để cài đặt MySQL và gói Python MySQL trên OS X Leopard? Hoặc làm cách nào để tìm hiểu về cách trở thành nhà phát triển web sử dụng OS X?

  3. Không tìm thấy './mysql/user.MYD' (Mã lỗi:2 - Không có tệp hoặc thư mục như vậy)

  4. CHỌN * TỪ trợ giúp

  5. Ruby - Đã xảy ra ngoại lệ:[Mysql2 ::Error] đã đóng kết nối MySQL