- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MySQL 上遇到性能问题。数据库包含大约40万条记录,站点在Drupal上运行,所有列都有索引。不幸的是,有些广告没有所有数据,所以我需要使用 LEFT JOIN 而不是 INNER JOIN。
查看:
CREATE VIEW cases_view AS SELECT
n.nid AS nid,
n.created AS created,
n.type AS type,
n.status AS status,
i.field_adpersonid_value AS field_adpersonid_value,
f.field_adpersonname_value AS field_adpersonname_value,
l.field_adpersonfamilyname_value AS field_adpersonfamilyname_value,
b.field_adpersondateofborn_value AS field_adpersondateofborn_value,
d.field_adpersondateofdied_value AS field_adpersondateofdied_value,
p.field_adnewspapergroupname_value AS field_adnewspapergroupname,
c.field_sbfcompanyname_value AS field_sbfcompanyname_value
FROM
node n
LEFT JOIN field_data_field_adpersonname f ON (f.entity_id = n.nid)
JOIN field_data_field_adpersonid i ON (i.entity_id = n.nid)
LEFT JOIN field_data_field_adpersonfamilyname l ON (l.entity_id = n.nid)
LEFT JOIN field_data_field_adpersondateofborn b ON (b.entity_id = n.nid)
LEFT JOIN field_data_field_adpersondateofdied d ON (d.entity_id = n.nid)
LEFT JOIN field_data_field_adnewspapergroupname p ON (p.entity_id = n.nid)
LEFT JOIN field_data_field_sbfcompanyname c ON (c.entity_id = n.nid)
WHERE
n.type = 'advertisement' AND n.status = 1 AND `p`.`field_adnewspapergroupname_value` <> 'Times Newspaper'
然后我使用以下查询在此 View (php) 中搜索数据:
SELECT DISTINCT v.field_adpersonname_value AS field_adpersonname_value, v.field_adpersonid_value AS field_adpersonid_value, v.field_adpersonfamilyname_value AS field_adpersonfamilyname_value, v.field_adpersondateofborn_value AS field_adpersondateofborn_value, v.field_adpersondateofdied_value AS field_adpersondateofdied_value, v.field_sbfcompanyname_value AS field_sbfcompanyname_value
FROM
cases_view v
WHERE (v.field_adpersonname_value LIKE 'Sample name%' ESCAPE '\\') AND (v.field_adpersonfamilyname_value LIKE '%' ESCAPE '\\') AND (v.field_adpersondateofborn_value LIKE '%' ESCAPE '\\') AND (v.field_adpersondateofdied_value LIKE '%' ESCAPE '\\')
ORDER BY v.field_adpersonfamilyname_value ASC, v.field_adpersondateofdied_value DESC
LIMIT 20 OFFSET 0
我的数据库配置:
max_connections = 300
connect_timeout = 100
max_user_connections = 300
key_buffer = 256M
query_cache_size = 96MB
query_cache_limit = 4MB
table_cache = 1800
table_definition_cache = 1800
sort_buffer_size = 32M
myisam_sort_buffer_size = 32M
tmp_table_size = 64MB
join_buffer_size = 4M
wait_timeout = 60
innodb_buffer_pool_size = 2G
innodb_log_file_size = 1G
max_heap_table_size = 128M
tmp_table_size = 128M
max_allowed_packet = 32M
thread_cache_size = 128
在我启动 mysql 服务器站点后,搜索速度很快,但几个小时后,“复制到临时表”开始复制越来越多的数据,服务器变得越来越慢,最终崩溃。系统拥有 8GB RAM 和双核。
请帮忙!
最佳答案
我认为在这种特殊情况下,首先查找要选择的行的 ID,然后添加其他表可能会更快。玩一下。
select <fields>
from node n
<joins>
where nid in
( select nid
from node
where n.status = 1
and n.type = 'advertisement
)
另一种解决方案,特别是当您只需要另一个表中的一个字段时,是使用子选择,这听起来很慢,但有时比联接更快:
select n.fields,
(select field_adpersonid_value from field_data_field_adpersonid i ON i.entity_id = n.nid) as field_adpersonid_value
from node n
where .. etc
你也可以尝试Explain来看看哪里慢了。
关于MySQL 永无止境 'Copying to tmp table' 与 db View 和 LEFT JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19295180/
下面的代码永远不会结束。这是为什么? #include #include #include #define SIZE 5 int nums[SIZE] = {0, 1, 2, 3, 4}; in
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我在 Node 中的 promise 方面遇到了问题,特别是在下面的代码中,我编写这些代码是为了执行 MySQL 查询,以便我的所有其他 100 多个函数可以共享它,而不是内联编写它。来自 PHP 开
我需要从表中删除重复项,同时保留一项。由于在 where 语句内的子查询中访问同一个表时无法从表中删除,因此我决定将受影响的 ID 存储在临时表中: create temporary my_temp_
我有以下 json 对象: "comments": [ {"username": "test", "comment": "This is a comment", "child": [
我正在尝试学习如何使用 hadoop 流。我正在尝试运行一个非常简单的映射器,并且没有缩减器。当我运行该程序时,它完成了 100% 的 map task ,然后在十分钟内什么都不做,然后报告它已完成所
我正在为 git 可执行文件创建一个简单的 Java 包装器,我想在我的应用程序中使用它。一个小代码示例: public static void main(String[] args) {
我正在学习react.js,并且我使用安装了react-tools的npm。但是在我输入命令: jsx --watch src/build/后,我对 jsx 文件做了一些更改。控制台日志: app.j
今天我下载了 Visual Studio 2012 的更新 4。我已经从Microsoft网站下载了文件VS2012.4.exe。我已从命令行“VS2012.4.exe/layout”运行此文件。这已
有时,在我搜索某些内容(或不小心单击“搜索定义”)后,主要是在 PHP 文件中,VS 开始永无止境的(运行蓝线)搜索(并且我在此期间听到 CPU 负载)。但是,我不能取消那个,没有 Esc 和 Ctr
我在 MySQL 上遇到性能问题。数据库包含大约40万条记录,站点在Drupal上运行,所有列都有索引。不幸的是,有些广告没有所有数据,所以我需要使用 LEFT JOIN 而不是 INNER JOIN
我是一名优秀的程序员,十分优秀!