我有一个这样的php mysql查询
$query = <<<EOS
SELECT * FROM articles
FORCE INDEX (articleindex)
WHERE category='$thiscat' AND did>'$thisdid'
AND mid!='$thismid' AND status='1'
AND group='$thisgroup' AND pid>'$thispid'
LIMIT 10
EOS;
作为优化,我已经对文章索引中的所有参数进行了索引,并且我使用强制索引来强制mysql使用索引,据说是为了加快处理速度。
但是这个查询似乎仍然很慢,而且它会导致阻塞,并达到mysql的最大连接限制。
我们如何改进这种长时间运行的查询?
发布于 2010-04-16 12:54:34
强制索引索引很可能会对您造成伤害,因为您实际上并没有在where子句中引用它。索引的存在是为了加快搜索速度,使您可以快速找到具有特定值的行。如果没有关于您的表和其中包含的数据的更多详细信息,我无法给出更准确的答案,但您绝对应该从删除force索引开始。如果仍然很慢,也许你可以发布EXPLAIN (your query)
的结果。
发布于 2010-11-28 09:35:04
希望您以前已经听说过,但是当有人发送请求时,您会怎么做
category="';drop table articles;"
...?请使用带有占位符的准备好的语句,这些语句将自动清理您的值,以防止他人冲刷您的数据库。
https://stackoverflow.com/questions/2650682
复制相似问题