我有一个mysql表,我想检查是否存在columnA = $ a和$ columnB = $ b的行。我不需要从那里选择任何东西。什么应该是有效的查询?目前我正在做,
if ($stmt = mysqli->prepare("SELECT * FROM TABLE WHERE columnA=? && columnB= ? LIMIT 1")) {
$stmt->bind_param("ss", $a, $b);
$stmt->execute();
$stmt->store_result();
$count=$stmt->num_rows;
$stmt->close();
}
return ($count > 0 ? true : false);
答案 0 :(得分:7)
试试这个:
if ($stmt = $mysqli->prepare("SELECT COUNT(*) FROM TABLE WHERE columnA=? && columnB=?")) {
$stmt->bind_param("ss", $a, $b);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->close();
}
return ($count > 0 ? true : false);
现在你应该能够完成它
答案 1 :(得分:3)
如果您想要改进该查询,那么这是一种有效的查询,您应该只选择一列来加速查询。
if ($stmt = mysqli->prepare("SELECT id FROM TABLE WHERE columnA=? && columnB= ? LIMIT 1")) {
答案 2 :(得分:2)
只从行中选择一个字段而不是所有字段(*
)。即使您没有使用它们,mysql仍然必须从存储中获取它们并准备好传输它们。
SELECT columnA FROM table WHERE ...
否则除了在columnA和columnB上放置索引以使搜索更快之外,你无法做其他事情来改进。