我制作一个简单的管理模块来查询数据库以显示结果。我通过php使用此查询:
SELECT
*
FROM myTable
WHERE id in(SELECT
id_registro
FROM myOtherTable
where id_forma='".$id_club."' and fecha_visita Like '%".$hoy."%'
)
order by id DESC
结果显示,它需要很长时间,比如2分钟。任何人都可以帮助我吗? 谢谢!
答案 0 :(得分:4)
如果没有看到您的数据库,很难找到让它更快的方法。
也许您可以尝试将WHERE IN
转为INNER JOIN
。对于像这样的事情
SELECT * FROM myTable INNER JOIN myOtherTable
ON (myTable.id = myOtherTable.id_registro)
WHERE myOtherTable.id_forma = '$id_club'
AND myOtherTable.fecha_visita LIKE '%$hoy%'
ORDER BY myTable.id DESC
注意在放入SQL查询或使用PDO prepare语句之前应该清理变量。
答案 1 :(得分:1)
子查询总是需要时间,因此最好尽可能多地忽略它们。
尝试通过检查其基数来优化您的查询,可能的密钥由DESC or EXPLAIN
实施,并在必要时使用FORCE INDEX
覆盖可能的密钥。
我猜您可以将查询修改为:
SELECT
*
FROM myTable
inner join id_registro
on (id = id_forma )
where
id_forma='".$id_club."' and fecha_visita Like '%".$hoy."%'
order by id DESC
答案 2 :(得分:0)
在mysql中LIKE可能需要很长时间,有或没有索引。 你有一个非常大的数据库吗?