Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
改进长mysql查询_Mysql - Fatal编程技术网

改进长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>'$

我有一个像这样的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;

$query=强制在articleindex上建立索引很可能会对您造成伤害,因为您实际上没有在where子句中引用它。索引的存在可以让您快速找到具有特定值的行,从而加快搜索速度。如果没有关于您的表和其中包含的数据的更多细节,我无法给出更精确的答案,但是您肯定应该从删除force索引开始。如果这仍然很慢,也许您可以发布的结果。

在articleindex上强制索引很可能会对您造成伤害,因为您实际上没有在where子句中引用它。索引的存在可以让您快速找到具有特定值的行,从而加快搜索速度。如果没有关于您的表和其中包含的数据的更多细节,我无法给出更精确的答案,但是您肯定应该从删除force索引开始。如果这仍然很慢,也许你可以发布的结果。

希望你以前听过,但是当有人发送请求时,你会怎么做

category="';drop table articles;"

。。。?请使用带有占位符的准备好的语句,这些占位符将自动清理您的值,以防止有人用软管冲洗您的数据库。

希望您以前听过这句话,但是当有人发送带有占位符的请求时,您该怎么办

category="';drop table articles;"

。。。?请使用带有占位符的准备好的语句,这些占位符将自动清理您的值,以防止人们使用您的数据库。

索引
文章索引
的定义是什么?特别是,列是什么(以及以什么顺序排列)?您可能不应该使用
强制索引
。如果可能的话,MySQL将使用索引,如果索引速度可能比表扫描快,那么,如果您在同一个脚本中多次执行此查询,请使用prepared语句。它们还有一个额外的优点,即准备好的语句参数不受SQL注入的影响。只选择你需要的列。我删除了强制索引和选择列,这是一个巨大的改进!如此之快,我甚至在mysql队列中都看不到它了!谢谢。索引的定义是什么?特别是,列是什么(以及以什么顺序排列)?您可能不应该使用
强制索引
。如果可能的话,MySQL将使用索引,如果索引速度可能比表扫描快,那么,如果您在同一个脚本中多次执行此查询,请使用prepared语句。它们还有一个额外的优点,即准备好的语句参数不受SQL注入的影响。只选择你需要的列。我删除了强制索引和选择列,这是一个巨大的改进!如此之快,我甚至在mysql队列中都看不到它了!谢谢