如果我只想要计数,我会选择哪些列

时间:2013-12-17 19:19:04

标签: php mysql sql

我想在我的表中计算结果...但我经常面临一个决定,我选择哪一栏?我应该选择主键吗?外卡?什么表现最好?有关系吗?以下是我称之为

的示例
// Wild Card, I feel like this is the worst one for performance?

$query = "SELECT * FROM table WHERE status = ?";

// Only selecting one column? Is there a better way 

$query = "SELECT id FROM table WHERE status = ?";

$stmt = $mysqli->prepare($query);
$stmt->bind_param('i',$status);
$stmt->execute();
$stmt->store_result();

$returned_amount = $stmt->num_rows;

$stmt->free_result();
$stmt->close();

3 个答案:

答案 0 :(得分:2)

好吧,如果您希望MySQL处理计数,您可以执行以下操作

$query = "SELECT COUNT(*) as count FROM `table` WHERE `field` = ?";

as count部分意味着您可以像计算列一样访问计数。

答案 1 :(得分:0)

你应SELECT COUNT(`id`) FROM `table` WHERE `status`=?,效率更高;)

答案 2 :(得分:0)

如果您愿意计算查询的所有结果(即:用于分页),您可以使用FOUND_ROWS()选项:

在主查询中,您需要在SELECT之后添加SQL_CALC_FOUND_ROWS选项,在第二个查询中,您需要使用FOUND_ROWS()函数来获取总行数。

SELECT SQL_CALC_FOUND_ROWS id FROM table WHERE status = 'something' LIMIT 10;

SELECT FOUND_ROWS();

dev.mysql.com

中的更多信息