我想在我的表中计算结果...但我经常面临一个决定,我选择哪一栏?我应该选择主键吗?外卡?什么表现最好?有关系吗?以下是我称之为
的示例// 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();
答案 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();
中的更多信息