Mysql Cakephp 3.0中的分页计数查询
我对cakephp 3.3版中的paginate的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 `
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是多少?