我有一个 drupal 网站,其中有一个特定的 SQL 查询,执行时间大约为 15-16 秒,有什么方法可以减少执行时间吗?
下面是查询
SELECT node.title AS node_title, node.nid AS nid, field_events_categories_taxonomy_term_data.nid AS field_events_categories_taxonomy_term_data_nid
FROM
node node
LEFT JOIN field_data_field_events_categories field_data_field_events_categories ON node.nid = field_data_field_events_categories.entity_id AND (field_data_field_events_categories.entity_type = :views_join_condition_? AND field_data_field_events_categories.deleted = :views_join_condition_?)
LEFT JOIN taxonomy_term_data taxonomy_term_data_field_data_field_events_categories ON field_data_field_events_categories.field_events_categories_tid = taxonomy_term_data_field_data_field_events_categories.tid
LEFT JOIN field_data_field_events_categories taxonomy_term_data_field_data_field_events_categories__field_data_field_events_categories ON taxonomy_term_data_field_data_field_events_categories.tid = taxonomy_term_data_field_data_field_events_categories__field_data_field_events_categories.field_events_categories_tid AND (taxonomy_term_data_field_data_field_events_categories__field_data_field_events_categories.entity_type = :views_join_condition_? AND taxonomy_term_data_field_data_field_events_categories__field_data_field_events_categories.deleted = :views_join_condition_?)
LEFT JOIN node field_events_categories_taxonomy_term_data ON taxonomy_term_data_field_data_field_events_categories__field_data_field_events_categories.entity_id = field_events_categories_taxonomy_term_data.nid
INNER JOIN taxonomy_index field_events_categories_taxonomy_term_data__taxonomy_index ON field_events_categories_taxonomy_term_data.nid = field_events_categories_taxonomy_term_data__taxonomy_index.nid
WHERE (( (field_events_categories_taxonomy_term_data.nid != :node_nid OR field_events_categories_taxonomy_term_data.nid IS NULL) AND (field_events_categories_taxonomy_term_data__taxonomy_index.tid = :db_condition_placeholder_?) )AND(( (node.status = :db_condition_placeholder_?) AND (node.type IN (:db_condition_placeholder_?)) )))
ORDER BY field_events_categories_taxonomy_term_data_nid DESC
LIMIT ? OFFSET ?
最佳答案
- 您在此查询中使用的每个表都必须有索引。检查它们并在必要时创建。
- 尽量避免 JOIN,因为它们非常慢。
关于mysql - SQL查询执行时间较长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33594467/