mysql - SQL查询执行时间较长

标签 mysql drupal

我有一个 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 ?

最佳答案

  1. 您在此查询中使用的每个表都必须有索引。检查它们并在必要时创建。
  2. 尽量避免 JOIN,因为它们非常慢。

关于mysql - SQL查询执行时间较长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33594467/

相关文章:

Php 电子邮件表单请求信息

mysql - 如何将同一数据库中的一行中的值复制到另一行?

drupal - 是否有合适的 Drupal 7 form api managed_file 教程?

drupal - 如何改进 Drupal 的使用?

mysql - 如何从我的 MySQL 表中删除相似的行?

php - 在数据库中存储、检索和重建路径

Php 页面无法从 mysql 值中识别 "ø"

mysql - 使用 GROUP_CONCAT 返回一行

drupal - 如何从自定义 PHP 代码发送电子邮件?

.htaccess - 可以在未找到的消息中插入文本