我正在将我的整个网站从MYSQLi转换为PDO。
现在我的一个较大的查询
有一个问题SELECT
kl.klant_id AS klant_id,
kl.klant_naam AS klant_naam,
kl.klant_adres AS klant_adres,
kl.klant_postcode AS klant_postcode,
kl.klant_plaats AS klant_plaats,
kl.klant_land AS klant_land,
kl.klant_telefoon AS klant_telefoon,
kl.klant_fax AS klant_fax,
kl.klant_email AS klant_email,
kl.klant_contactpersoon AS klant_contactpersoon,
gr.groep_id AS groep_id,
gr.groep_naam AS groep_naam,
IF(ft.factuur_isgroep>0,gr.groep_factuur_adress,ft.factuur_adres) AS factuur_adres,
IF(ft.factuur_isgroep>0,gr.groep_factuur_postbus,ft.factuur_postbus) AS factuur_postbus,
IF(ft.factuur_isgroep>0,gr.groep_factuur_postcode,ft.factuur_postcode) AS factuur_postcode,
IF(ft.factuur_isgroep>0,gr.groep_factuur_plaats,ft.factuur_plaats) AS factuur_plaats,
IF(ft.factuur_isgroep>0,gr.groep_factuur_land,ft.factuur_land) AS factuur_land,
IF(ft.factuur_isgroep>0,gr.groep_factuur_iban,ft.factuur_iban) AS factuur_iban,
IF(ft.factuur_isgroep>0,gr.groep_factuur_bic,ft.factuur_bic) AS factuur_bic,
IF(ft.factuur_isgroep>0,gr.groep_factuur_telefoon,ft.factuur_telefoon) AS factuur_telefoon,
IF(ft.factuur_isgroep>0,gr.groep_factuur_contactpersoon,ft.factuur_contactpersoon) AS factuur_contactpersoon,
IF(ft.factuur_isgroep>0,gr.groep_factuur_bymail,ft.factuur_bymail) AS factuur_bymail,
IF(ft.factuur_isgroep>0,gr.groep_factuur_email,ft.factuur_email) AS factuur_email,
IF(ft.factuur_isgroep>0,gr.groep_extra,ft.factuur_opmerkingen) AS factuur_opmerkingen,
al.alarm_ccs_type AS alarm_ccs,
al.alarm_gprs AS alarm_gprs,
al.alarm_gprs_provider AS alarm_gprs_provider,
al.alarm_gprs_sn AS alarm_gprs_sn,
al.alarm_doormelding AS alarm_doormelding,
al.alarm_onderhoud AS alarm_onderhoud,
al.alarm_onderhoud_laatst AS alarm_onderhoud_laatst,
al.alarm_certificaat AS alarm_certificaat,
al.alarm_cer_state AS alarm_cer_state,
al.alarm_cer_uitgifte AS alarm_cer_uitgifte,
al.alarm_risicoklasse AS alarm_risicoklasse,
mk.pac_naam AS meldkamer_naam,
mk.pac_clientnr AS meldkamer_clientnr,
mk.pac_promnr AS meldkamer_promnr,
mk.pac_backup_clientnr AS meldkamer_backup_clientnr,
mk.pac_backup_promnr AS meldkamer_backup_promnr
FROM klanten AS kl
LEFT JOIN groepen AS gr ON kl.klant_groupid > 0 AND kl.klant_groupid = gr.groep_id
LEFT JOIN alarm AS al ON al.alarm_klantid = kl.klant_id
LEFT JOIN meldkamer AS mk ON mk.pac_klantid = kl.klant_id
LEFT JOIN factuur AS ft ON ft.factuur_klantid = kl.klant_id
ORDER BY klant_id ASC
查询有效,但在PDO上它很慢。 (+/- 3秒,而mysqli小于1秒)
这是PDO的已知问题还是我的查询有问题?
我已经阅读了很多其他有类似问题的人,但他们都有比这更复杂的查询。
解决了感谢cale_b。我的问题是索引我的列。我索引了上面查询中使用的所有列,现在它非常快。感谢。