我有一个查询,它根据添加日期从 mysql 数据库中选择数十行。
查询有效,但经常遇到错误,效率低下。注意:该表有近 10k+ 行。
这是我遇到的问题:
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query' in somefile.php:49
Stack trace:
#0 somefile.php(49): PDOStatement->execute()
这是导致错误的查询:
// Problematic Query
$query = $conn->prepare('SELECT *
FROM table_name
WHERE DATE(date_added) IN (
SELECT DATE(date_added) as creation_date
FROM table_name
GROUP BY creation_date DESC
)
ORDER BY id DESC
LIMIT :limit OFFSET :offset'
);
$query->bindValue(':limit', (int) trim($entrylimit), PDO::PARAM_INT);
$query->bindValue(':offset', (int) trim($offset), PDO::PARAM_INT);
$query->execute();
关于如何改进此查询有什么建议吗?
编辑:希望能解释这是在做什么:它收集一个唯一创建日期的列表,然后使用它来收集具有该特定创建日期的所有行。(我曾经在 php 循环中完成此操作,但速度很慢。)