改进长mysql查询
我有一个像这样的php mysql查询改进长mysql查询,mysql,Mysql,我有一个像这样的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>'$
$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;
$query=强制在articleindex上建立索引很可能会对您造成伤害,因为您实际上没有在where子句中引用它。索引的存在可以让您快速找到具有特定值的行,从而加快搜索速度。如果没有关于您的表和其中包含的数据的更多细节,我无法给出更精确的答案,但是您肯定应该从删除force索引开始。如果这仍然很慢,也许您可以发布的结果。在articleindex上强制索引很可能会对您造成伤害,因为您实际上没有在where子句中引用它。索引的存在可以让您快速找到具有特定值的行,从而加快搜索速度。如果没有关于您的表和其中包含的数据的更多细节,我无法给出更精确的答案,但是您肯定应该从删除force索引开始。如果这仍然很慢,也许你可以发布的结果。希望你以前听过,但是当有人发送请求时,你会怎么做
category="';drop table articles;"
。。。?请使用带有占位符的准备好的语句,这些占位符将自动清理您的值,以防止有人用软管冲洗您的数据库。希望您以前听过这句话,但是当有人发送带有占位符的请求时,您该怎么办
category="';drop table articles;"
。。。?请使用带有占位符的准备好的语句,这些占位符将自动清理您的值,以防止人们使用您的数据库。索引文章索引的定义是什么?特别是,列是什么(以及以什么顺序排列)?您可能不应该使用强制索引
。如果可能的话,MySQL将使用索引,如果索引速度可能比表扫描快,那么,如果您在同一个脚本中多次执行此查询,请使用prepared语句。它们还有一个额外的优点,即准备好的语句参数不受SQL注入的影响。只选择你需要的列。我删除了强制索引和选择列,这是一个巨大的改进!如此之快,我甚至在mysql队列中都看不到它了!谢谢。索引的定义是什么?特别是,列是什么(以及以什么顺序排列)?您可能不应该使用强制索引
。如果可能的话,MySQL将使用索引,如果索引速度可能比表扫描快,那么,如果您在同一个脚本中多次执行此查询,请使用prepared语句。它们还有一个额外的优点,即准备好的语句参数不受SQL注入的影响。只选择你需要的列。我删除了强制索引和选择列,这是一个巨大的改进!如此之快,我甚至在mysql队列中都看不到它了!谢谢