我的问题是我还没有一个好的服务器来测试它,但我想知道它是否使用起来更快:
$sqlgetg = "SELECT assignments.id FROM assignments LEFT JOIN userassignments ON assignments.id = userassignments.assignmentid WHERE userassignments.userid = '" . $row['id'] . "' AND userassignments.assignmentid = '" . $assignmentid . "'";
或
$sqlgetg = "SELECT NULL FROM assignments LEFT JOIN userassignments ON assignments.id = userassignments.assignmentid WHERE userassignments.userid = '" . $row['id'] . "' AND userassignments.assignmentid = '" . $assignmentid . "'";
因为我必须检查是否存在分配 ID 为 x 的用户的分配?我不需要任何其他东西,除了这个:if(mysqli_num_rows($resultgetg) > 0)?在这两种情况下,phpMyAdmin 都给了我我想要的行号。 (我用它检查过 没有 WHERE,它仍然有效。)
最佳答案
如果您只想计算返回的行数,则可以“从”表中选择任何静态值... SELECT NULL
或SELECT 42
管他呢。但实际上,您的两种策略都不是最佳的,因为它们需要服务器进行不必要的工作、不必要的网络流量以及对您打算丢弃的结果集进行不必要的处理。
如果您想要计算行数,那么实际上就这样做。你应该SELECT COUNT(*) AS how_many_rows ...
并让服务器计算行数并返回包含计数的单行和单列(“how_many_rows”——组成您自己的别名)。
关于php - MySQL 查询行的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47010601/