連絡先の概要ページの[アクティビティ]タブには、アクティビティを読み込んでリストするのに時間がかかります。
以下は、〜50
のアクティビティレコードを持つ連絡先に対して、それぞれ20〜25秒かかる、時間のかかるクエリです。
クエリ1
INSERT INTO {$activityContactTempTable} ( activity_id, contact_id, record_type_id, contact_name, is_deleted )
SELECT ac.activity_id,
ac.contact_id,
ac.record_type_id,
c.sort_name,
c.is_deleted
FROM {$activityTempTable}
INNER JOIN civicrm_activity a ON ( a.id = {$activityTempTable}.activity_id )
INNER JOIN civicrm_activity_contact ac ON ( ac.activity_id = {$activityTempTable}.activity_id )
INNER JOIN civicrm_contact c ON c.id = ac.contact_id
WHERE ac.record_type_id != %1
に続く
INSERT INTO {$activityContactTempTable} ( activity_id, contact_id, record_type_id, contact_name, is_deleted, counter )
{$select}, count(ac.contact_id)
FROM {$activityTempTable}
INNER JOIN civicrm_activity a ON ( a.id = {$activityTempTable}.activity_id )
INNER JOIN civicrm_activity_contact ac ON ( ac.activity_id = {$activityTempTable}.activity_id )
INNER JOIN civicrm_contact c ON c.id = ac.contact_id
WHERE ac.record_type_id = %1
GROUP BY ac.activity_id
from https://github.com/civicrm/civicrm-core/blob/master/CRM/Activity/BAO/Activity.php#L1022-L1048
これらのクエリを追加したと思われる未解決の問題が CRM-20481
です。これらの変更を元に戻すと、読み込み時間はさらに悪くなります。そのため、getActivities()関数を2回呼び出して数とアクティビティのリストを取得します。
誰もが同じことを経験しましたか?私は、e、アップグレード後のアクティビティタブの読み込みが遅い?
私たちのMySQLは5.5で、遅いクエリがこのバージョンのみに関連する場合に使用します。
UPDATE – 次のクエリでtempテーブルが作成されます。
CREATE TABLE temp_table ( fixed_sort_order INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,activity_id int unsigned,
activity_date_time datetime,
source_record_id int unsigned,
status_id int unsigned,
subject varchar(255),
source_contact_name varchar(255),
activity_type_id int unsigned,
activity_type varchar(128),
case_id int unsigned,
case_subject varchar(255),
campaign_id int unsigned, UNIQUE KEY ( activity_id )
) ENGINE=HEAP DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
fixed_sort_orderおよびactivity_idのインデックスを持つ
ベストアンサー
申し訳ありませんが、適切な答えはありません