【发布时间】:2011-08-20 21:33:36
【问题描述】:
我有这个问题:
SELECT
a.codigo AS code, a.nome AS name, a.especialidade AS expertise, a.telemovel1 AS mobile, a.email AS email, a.codigopostal AS zipcode
FROM table_name_a a
WHERE a.nome != ''
AND a.codigo!='5555555'
AND a.codigo!='705416'
UNION ALL
SELECT
b.cod AS code, b.nome AS name, b.especialidade AS expertise, b.telem1 AS mobile, b.mail AS email, b.cp AS zipcode
FROM table_name_b b
WHERE b.nome != ''
AND b.cod!='5555555'
AND b.cod!='705416'
AND b.cod NOT IN(SELECT assoc.codigo from table_name_a assoc)
ORDER BY code ASC
表 A: +/-6000 行(并且还在增长)
表 B: +/-2000 行(并且还在增长)
问题:
当服务器被一两个用户对数据库进行多次查询时,该查询运行良好......但是当服务器被使用时,假设白天有 10 个用户进行多次查询,大约 + /- 1000 个客户端在任何给定时间执行一些查询,查询来自:
显示第 0 - 29 行(总共 7,138 行,查询耗时 0.0734 秒)
到
显示第 0 - 29 行(总共 7,138 行,查询耗时 100.0933 秒)
提问:
这是查询性能问题还是服务器配置/性能问题?
已编辑:
字段类型:
cod, codigo -> int(11)
nome, telemovel1, telem1, especialidade, codigopostal, cp -> varchar(200)
电子邮件 -> varchar(400)
解释查询:
【问题讨论】:
-
未经测试,我想问题出在 NOT IN 子句中。
-
发布一个关于查询性能的问题而没有提供有关列类型和可用索引的详细信息,表明您不了解您的代码实际在做什么 - 因此它可能是查询/模式性能问题。跨度>
-
NOT IN 的加载时间也很长,因此建议重写。
-
@dor:我已经更新了问题以包含您所要求的内容(老实说,没有时间提出适当的问题,对此感到抱歉!)
-
您是否对查询进行了解释以查看问题所在?
标签: php mysql performance