mysql select count 1_加索引后MySQL select count(1) 查询很慢

SQL1:

SELECT count(1) from(

SELECT a.id AS "id"

FROM ims_customer a

left join ims_customer_bind_user cbu on cbu.customer_id=a.id

LEFT JOIN sys_user u ON u.id = cbu.user_id

LEFT JOIN sys_office o ON o.id = u.office_id

LEFT JOIN sys_user customerSalesServiceUser ON customerSalesServiceUser.id = a.customer_sales_service

WHERE a.del_flag = 0

and (cbu.del_flag = 0 or cbu.del_flag is null)

ORDER BY a.update_date

) as ww

SQL2:

SELECT a.id AS "id", a.mailing_contact AS "mailingContact", a.company_id AS "companyId", a.customer_code AS "customerCode",

a.customer_name AS "customerName", a.customer_simple_name AS "customerSimpleName",

a.customer_en_name AS "customerEnName", a.customer_property AS "customerProperty", a.country_area AS "countryArea",

a.customer_type AS "customerType", a.contact_person AS "contactPerson", a.contact_address AS "contactAddress",

a.zip_code AS "zipCode", a.tel_phone1 AS "telPhone1", a.tel_phone2 AS "telPhone2", a.fax AS "fax",

a.email AS "email", a.bank AS "bank", a.bank_account AS "bankAccount", a.film_ticket_type AS "filmTicketType",

a.is_zhongliang AS "isZhongliang", a.is_sale_achievement AS "isSaleAchievement",

a.sale_achievement_remarks AS "saleAchievementRemarks", a.is_account_limit AS "isAccountLimit",

a.customer_service AS "customerService", a.agree_on_receive_money_datetime AS "agreeOnReceiveMoneyDatetime",

a.receive_money_month AS "receiveMoneyMonth", a.is_import_client AS "isImportClient",

a.well_being_deal_with AS "wellBeingDealWith", a.is_physical_examination AS "isPhysicalExamination",

a.is_beforehand_voucher AS "isBeforehandVoucher", a.is_remittance_error AS "isRemittanceError",

a.is_fixed_pay_later AS "isFixedPayLater"

FROM ims_customer a

left join ims_customer_bind_user cbu on cbu.customer_id=a.id

LEFT JOIN sys_user u ON u.id = cbu.user_id

LEFT JOIN sys_office o ON o.id = u.office_id

LEFT JOIN sys_user customerSalesServiceUser ON customerSalesServiceUser.id = a.customer_sales_service

WHERE a.del_flag = 0

and (cbu.del_flag = 0 or cbu.del_flag is null)

ORDER BY a.update_date

DESC limit 10

当前只有2000数据。。。。

问题:

加索引前,SQL1查询大约需要600ms,但是SQL2查询需要2.2s;

给user_id、customer_id加索引后,SQL1查询大约需要2.8s,但是SQL2查询只要28ms就搞定了。

为什么索引前与索引后会有这样的差别?

为什么索引后select count(1)对查询性能影响这么大?

想请教下各位大牛对SQL1有什么优化建议?

补充

索引前:

sql1

eaf7b4b7bd7ccf3bf16c6228c79eeec6.png

sql2

a64352fa130f04835439707862abfde1.png

索引后:

sql1

45d5c74b122f6ea426495e74c2a53f45.png

sql2

831b4fba4195c55eac6cee9bf2eb4198.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值