CiviCRM Community Forums (archive)

*

News:

Have a question about CiviCRM?
Get it answered quickly at the new
CiviCRM Stack Exchange Q+A site

This forum was archived on 25 November 2017. Learn more.
How to get involved.
What to do if you think you've found a bug.



  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Developer Discussion (Moderator: Donald Lobo) »
  • How to improve query performance for contrib. dashboard
Pages: [1]

Author Topic: How to improve query performance for contrib. dashboard  (Read 841 times)

SarahG (FountainTribe)

  • Ask me questions
  • ****
  • Posts: 782
  • Karma: 29
  • CiviCRM version: 4.4.7
  • CMS version: Drupal 6, Drupal 7
  • MySQL version: 5.5
  • PHP version: 5.3
How to improve query performance for contrib. dashboard
September 06, 2011, 08:51:37 pm
When a user looks at the contribution dashboard ( URL: /civicrm/contribute?reset=1 ), the following query gets executed:


Code: [Select]
SELECT  DISTINCT(civicrm_contribution.id), contact_a.id as contact_id, contact_a.contact_type  as `contact_type`, contact_a.contact_sub_type  as `contact_sub_type`, contact_a.sort_name  as `sort_name`, contact_a.display_name  as `display_name`, civicrm_contribution.id as contribution_id, civicrm_contribution.currency as `currency`, civicrm_contribution.receive_date as `receive_date`, civicrm_contribution.non_deductible_amount as `non_deductible_amount`, civicrm_contribution.total_amount as `total_amount`, civicrm_contribution.fee_amount as `fee_amount`, civicrm_contribution.net_amount as `net_amount`, civicrm_contribution.trxn_id as `trxn_id`, civicrm_contribution.invoice_id as `invoice_id`, civicrm_contribution.cancel_date as `cancel_date`, civicrm_contribution.cancel_reason as `cancel_reason`, civicrm_contribution.receipt_date as `receipt_date`, civicrm_contribution.thankyou_date as `thankyou_date`, civicrm_contribution.source as `contribution_source`, civicrm_contribution.amount_level as `amount_level`, civicrm_contribution.is_test as `is_test`, civicrm_contribution.is_pay_later as `is_pay_later`, civicrm_contribution.check_number as `check_number`, civicrm_contribution.campaign_id as contribution_campaign_id, civicrm_contribution_type.id as contribution_type_id, civicrm_contribution_type.name as contribution_type, civicrm_contribution_type.accounting_code as `accounting_code`, payment_instrument.id as instrument_id, payment_instrument.label as `payment_instrument`, civicrm_product.id as product_id, civicrm_product.name as `product_name`, civicrm_product.sku as `sku`, civicrm_contribution_product.id as contribution_product_id, civicrm_contribution_product.product_option as `product_option`, civicrm_contribution_product.fulfilled_date as `fulfilled_date`, civicrm_contribution_product.start_date as `contribution_start_date`, civicrm_contribution_product.end_date as `contribution_end_date`, civicrm_contribution.contribution_recur_id as `contribution_recur_id`, civicrm_note.note as contribution_note, contribution_status.value as contribution_status_id, contribution_status.label as contribution_status, payment_instrument.name as contribution_payment_instrument, civicrm_contribution.check_number as contribution_check_number, civicrm_value_extra_contribution_info.id as civicrm_value_extra_contribution_info_id, civicrm_value_extra_contribution_info.note_13 as custom_13, civicrm_value_extra_contribution_info.deposit_id_24 as custom_24, civicrm_value_extra_contribution_info.batch_id_25 as custom_25, civicrm_value_extra_contribution_info.third_party_payor_26 as custom_26  FROM civicrm_contact contact_a LEFT JOIN civicrm_contribution ON civicrm_contribution.contact_id = contact_a.id  INNER JOIN civicrm_contribution_type ON civicrm_contribution.contribution_type_id = civicrm_contribution_type.id  LEFT  JOIN civicrm_contribution_product ON civicrm_contribution_product.contribution_id = civicrm_contribution.id LEFT  JOIN civicrm_product ON civicrm_contribution_product.product_id =civicrm_product.id 
LEFT JOIN civicrm_value_extra_contribution_info ON civicrm_value_extra_contribution_info.entity_id = civicrm_contribution.id  LEFT JOIN civicrm_note ON ( civicrm_note.entity_table = 'civicrm_contribution' AND
                                                    civicrm_contribution.id = civicrm_note.entity_id ) LEFT JOIN civicrm_option_group option_group_payment_instrument ON ( option_group_payment_instrument.name = 'payment_instrument') LEFT JOIN civicrm_option_value payment_instrument ON (civicrm_contribution.payment_instrument_id = payment_instrument.value
                               AND option_group_payment_instrument.id = payment_instrument.option_group_id )  LEFT JOIN civicrm_option_group option_group_contribution_status ON (option_group_contribution_status.name = 'contribution_status') LEFT JOIN civicrm_option_value contribution_status ON (civicrm_contribution.contribution_status_id = contribution_status.value
                               AND option_group_contribution_status.id = contribution_status.option_group_id )  WHERE  ( civicrm_contribution.is_test = 0 )  AND (contact_a.is_deleted = 0)    ORDER BY receive_date desc  LIMIT 0, 10


When there is a ton of contributions, this query either runs very slowly or blows up with the error message:
nativecode=126 ** Incorrect key file for table '/tmp/#sql_e44_0.MYI'; try to repair it

The backtrace on the error message is:
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/Error.php, backtrace, 159
, handle,
/home/saltlake/public_html/sites/all/modules/civicrm/packages/PEAR.php, call_user_func, 931
/home/saltlake/public_html/sites/all/modules/civicrm/packages/DB.php, PEAR_Error, 971
/home/saltlake/public_html/sites/all/modules/civicrm/packages/PEAR.php, DB_Error, 564
/home/saltlake/public_html/sites/all/modules/civicrm/packages/DB/common.php, raiseError, 1903
/home/saltlake/public_html/sites/all/modules/civicrm/packages/DB/mysql.php, raiseError, 898
/home/saltlake/public_html/sites/all/modules/civicrm/packages/DB/mysql.php, mysqlRaiseError, 327
/home/saltlake/public_html/sites/all/modules/civicrm/packages/DB/common.php, simpleQuery, 1216
/home/saltlake/public_html/sites/all/modules/civicrm/packages/DB/DataObject.php, query, 2424
/home/saltlake/public_html/sites/all/modules/civicrm/packages/DB/DataObject.php, _query, 1610
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/DAO.php, query, 147
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/DAO.php, query, 874
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Contact/BAO/Query.php, executeQuery, 3602
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Contribute/Selector/Search.php, searchQuery, 298
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/Selector/Controller.php, getRows, 373
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/Selector/Controller.php, getRows, 322
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Contribute/Form/Search.php, run, 405
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Contribute/Form/Search.php, postProcess, 191
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/Form.php, preProcess, 325
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Display.php, buildForm, 99
/home/saltlake/public_html/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php, perform, 203
/home/saltlake/public_html/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php, handle, 103
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/Controller.php, handle, 284
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Contribute/Page/DashBoard.php, run, 117
/home/saltlake/public_html/sites/all/modules/civicrm/CRM/Core/Invoke.php, run, 223
/home/saltlake/public_html/sites/all/modules/civicrm/drupal/civicrm.module, invoke, 363
, civicrm_invoke,
/home/saltlake/public_html/includes/menu.inc, call_user_func_array, 348
/home/saltlake/public_html/index.php, menu_execute_active_handler, 18


Any ideas on how I can fix this query?
Did I help you? Please donate to the Civi-Make-It-Happen campaign  CiviCRM for mobile devices! 

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: How to improve query performance for contrib. dashboard
September 07, 2011, 04:48:45 am
Try this fix  - you need to also set global_settings/search to not use 'order' (gui setting)

http://issues.civicrm.org/jira/browse/CRM-8766

Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

Pages: [1]
  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Developer Discussion (Moderator: Donald Lobo) »
  • How to improve query performance for contrib. dashboard

This forum was archived on 2017-11-26.