Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 Cakephp 3.0中的分页计数查询_Mysql_Performance_Cakephp_Count_Pagination - Fatal编程技术网

Mysql Cakephp 3.0中的分页计数查询

Mysql Cakephp 3.0中的分页计数查询,mysql,performance,cakephp,count,pagination,Mysql,Performance,Cakephp,Count,Pagination,我对cakephp 3.3版中的paginate的count()有一个问题: 我的桌子上有60万条记录。 这里涉及的字段是name和cityf。两者在MySQL中都有索引 我显示的是10和10,尽管查询速度非常快,但paginate的count()花费了50多秒 如何在cakephp的3.3版中解决这个问题。遵循以下两条SQL语句和时间: 选择查询主目录: SELECT Rr.id AS `Rr__id`, Rr.idn AS `Rr__idn`, Rr.aniver AS `

我对cakephp 3.3版中的paginate的
count()
有一个问题:

我的桌子上有60万条记录。 这里涉及的字段是
name
cityf
。两者在MySQL中都有索引

我显示的是10和10,尽管查询速度非常快,但paginate的
count()
花费了50多秒

如何在cakephp的3.3版中解决这个问题。遵循以下两条SQL语句和时间:

选择查询主目录:

SELECT 
  Rr.id AS `Rr__id`, 
  Rr.idn AS `Rr__idn`, 
  Rr.aniver AS `Rr__aniver`, 
  Rr.pessoa AS `Rr__pessoa`, 
  Rr.name AS `Rr__name`, 
  Rr.phoner AS `Rr__phoner`, 
  Rr.tipolf AS `Rr__tipolf`, 
  Rr.addressf AS `Rr__addressf`, 
  Rr.num_endf AS `Rr__num_endf`, 
  Rr.complem AS `Rr__complem`, 
  Rr.bairrof AS `Rr__bairrof`, 
  Rr.cityf AS `Rr__cityf`, 
  Rr.statef AS `Rr__statef`, 
  Rr.cepf AS `Rr__cepf`, 
  Rr.n1 AS `Rr__n1`, 
  Rr.n2 AS `Rr__n2`, 
  Rr.smerc AS `Rr__smerc`, 
  Rr.n3 AS `Rr__n3`, 
  Rr.n4 AS `Rr__n4`, 
  Rr.fone AS `Rr__fone`, 
  Rr.numero AS `Rr__numero` 
FROM 
  `MG` Rr 
WHERE 
  (
    Rr.name like 'MARCOS%' 
    AND Rr.cityf like 'BELO HORIZONTE%'
  ) 
ORDER BY 
  name asc 
LIMIT 
  10 OFFSET 0
=10毫秒

说明:

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra   
1   SIMPLE  Rr  range   NAME,CITYF,cityfbairrof,cityfaddressf,cityfbairrofaddressf,namen1n2n3n4     NAME    63  NULL    21345   Using index condition; Using where
id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra   
1   SIMPLE  Rr  range   NAME,CITYF,cityfbairrof,cityfaddressf,cityfbairrofaddressf,namen1n2n3n4     NAME    63  NULL    21345   Using index condition; Using where
- 选择查询计数:

SELECT 
  (
    COUNT(*)
  ) AS `count` 
FROM 
  `MG` Rr 
WHERE 
  (
    Rr.name like 'MARCOS%' 
    AND Rr.cityf like 'BELO HORIZONTE%'
  )
=51.247毫秒

说明:

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra   
1   SIMPLE  Rr  range   NAME,CITYF,cityfbairrof,cityfaddressf,cityfbairrofaddressf,namen1n2n3n4     NAME    63  NULL    21345   Using index condition; Using where
id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra   
1   SIMPLE  Rr  range   NAME,CITYF,cityfbairrof,cityfaddressf,cityfbairrofaddressf,namen1n2n3n4     NAME    63  NULL    21345   Using index condition; Using where

在其他几种情况下也会发生这种情况:查询的计数总是非常慢

谢谢你的帮助


Marcos

更多信息:例如,如果我只输入字段名,计数查询也很快,但是如果添加其他(字段cityf),计数查询非常慢)。有一个解决方案可以绕过分页计数,但它在3.0版cakephp中不起作用。。。我真的需要使用分页,如果可以绕过计数,只显示下一步按钮是一个解决方案。如何在cakephp的3.3版中做到这一点?也许这会有所帮助:。它讨论了MySQL和COUNT()的性能问题COUNT是多少?