Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
Php 加速复杂查询_Php_Mysql_Database_Join_Query Performance - Fatal编程技术网

Php 加速复杂查询

Php 加速复杂查询,php,mysql,database,join,query-performance,Php,Mysql,Database,Join,Query Performance,我有两个问题。第一个计算结果,第二个得到我需要的日期 我的数据库大约有150000行。它们需要一些时间才能跑 我怎样才能加快速度 $sql ="SELECT COUNT(DISTINCT articolo.id) FROM articolo INNER JOIN l_articolo_formato ON l_articolo_formato.id_articolo=articolo.id INNER JOIN formato ON formato.id=l_ar

我有两个问题。第一个计算结果,第二个得到我需要的日期

我的数据库大约有150000行。它们需要一些时间才能跑

我怎样才能加快速度

$sql ="SELECT COUNT(DISTINCT articolo.id) FROM articolo
        INNER JOIN l_articolo_formato ON l_articolo_formato.id_articolo=articolo.id
        INNER JOIN formato ON formato.id=l_articolo_formato.id_formato
        INNER JOIN l_articolo_genere ON l_articolo_genere.id_articolo=articolo.id
        INNER JOIN genere ON genere.id=l_articolo_genere.id_genere
        INNER JOIN l_articolo_rental ON l_articolo_rental.id_articolo=articolo.id
        INNER JOIN rental ON rental.id=l_articolo_rental.id_rental
        WHERE  formato.nome = :var_value AND  genere.adult = 0 AND rental.nome ='0'" ;
$s=$pdo->prepare($sql);
$s->bindValue(':var_value',$var_value);
$s->execute();
$num_ris=$s->fetchColumn(0);


// il numero totale di pagine
$all_pages = ceil($num_ris / $ris_per_pag);

//la ricerca
$sql ="SELECT articolo.id,articolo.titolo,articolo.anno_produzione,articolo.immagine,articolo.prezzo_dettaglio FROM articolo
        INNER JOIN l_articolo_formato ON l_articolo_formato.id_articolo=articolo.id
        INNER JOIN formato ON formato.id=l_articolo_formato.id_formato
        INNER JOIN l_articolo_genere ON l_articolo_genere.id_articolo=articolo.id
        INNER JOIN genere ON genere.id=l_articolo_genere.id_genere
        INNER JOIN l_articolo_rental ON l_articolo_rental.id_articolo=articolo.id
        INNER JOIN rental ON rental.id=l_articolo_rental.id_rental
        WHERE  formato.nome = :var_value AND  genere.adult = 0 AND rental.nome ='0' LIMIT $first,$ris_per_pag" ;
$s=$pdo->prepare($sql);
$s->bindValue(':var_value',$var_value);
$s->execute();
$s->setFetchMode(PDO::FETCH_BOTH);
这就是第一个查询的解释

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  articolo    index   PRIMARY PRIMARY 4   NULL    42092   Using index
1   SIMPLE  l_articolo_formato  ref PRIMARY PRIMARY 4   uz49pu08_StoreDb.articolo.id    1   Using index
1   SIMPLE  l_articolo_rental   ref PRIMARY PRIMARY 4   uz49pu08_StoreDb.l_articolo_formato.id_articolo 1   Using where; Using index
1   SIMPLE  l_articolo_genere   ref PRIMARY PRIMARY 4   uz49pu08_StoreDb.l_articolo_formato.id_articolo 1   Using where; Using index
1   SIMPLE  genere  eq_ref  PRIMARY PRIMARY 4   uz49pu08_StoreDb.l_articolo_genere.id_genere    1   Using where
1   SIMPLE  rental  ALL PRIMARY NULL    NULL    NULL    2   Using where; Using join buffer
1   SIMPLE  formato eq_ref  PRIMARY PRIMARY 4   uz49pu08_StoreDb.l_articolo_formato.id_formato  1   Using where

那么,您是否已经进行了解释,以查看您的查询正在使用哪些索引?您是否可以向我解释我需要执行哪些操作?执行您的查询时,请向它们添加解释,以便解释选择计数。。。。。查看MySQL如何在内部执行它们。这有助于确定哪些索引(如果有)用于哪些联接和where子句。150000行没有那么大。您可能只需要优化表的索引。好的,刚刚添加了第一个查询的解释,我现在可以做什么?我可以从中理解什么?