使用in关键字子查询1317错误的两种办法_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1960 | 回复: 0   主题: 使用in关键字子查询1317错误的两种办法        下一篇 
紫狐狸988
注册用户
等级:上士
经验:261
发帖:29
精华:0
注册:2012-3-5
状态:离线
发送短消息息给紫狐狸988 加好友    发送短消息息给紫狐狸988 发消息
发表于: IP:您无权察看 2015-10-30 22:41:24 | [全部帖] [楼主帖] 楼主

  Error 1317 mysql query execution interrupted  消息内容:查询执行被中断(数据库直接挂起)

1. 现象:

(1)在PHP程序中使用子查询语句,导致Mysql自动“挂起”,即数据库“卡死”,程序不能正常运行

(2)在mysql命令行执行子查询语句,Mysql需要等待较长时间,提示 “  Error 1317 mysql query execution interrupted”  

2. 处理办法有两种 :

           006_kh表记录数目共计为 24256 条     uzone_2701_kh 表中记录数目共计为 52327条

原始SQL语句(子查询):

SELECT count(kh_id) FROM `006_kh` WHERE  kh_id  in (select khbh from  uzone_2701_kh where uzbh ='180' and  jgm='27010899')

使用 desc 命令分析,结果如下:
mysql> 
mysql> desc SELECT count(kh_id) FROM `006_kh` WHERE  kh_id  in (select khbh from  uzone_2701_kh where uzbh ='180' and  jgm='27010899') ;
+----+--------------------+---------------+-------+---------------+---------+---------+------+-------+--------------------------+
| id | select_type        | table         | type  | possible_keys | key     | key_len | ref  | rows  | Extra                    |
+----+--------------------+---------------+-------+---------------+---------+---------+------+-------+--------------------------+
|  1 | PRIMARY            | 006_kh        | index | NULL          | PRIMARY | 4       | NULL | 89394 | Using where; Using index |
|  2 | DEPENDENT SUBQUERY | uzone_2701_kh | ALL   | NULL          | NULL    | NULL    | NULL | 24256 | Using where              |
+----+--------------------+---------------+-------+---------------+---------+---------+------+-------+--------------------------+
2 rows in set (0.00 sec)

(1) 第一种方式:

sql脚本

select count(kh_id) FROM `006_kh` where kh_id in(select khbh from (select khbh from uzone_2701_kh where uzbh ='180' and  jgm='27010899') as khid_array)

使用 desc 命令分析,结果如下:
mysql> desc select count(kh_id) FROM `006_kh` where kh_id in(select khbh from (select khbh from uzone_2701_kh where uzbh ='180' and  jgm='27010899') as khid_array) ;
+----+--------------------+---------------+-------+---------------+---------+---------+------+-------+--------------------------+
| id | select_type        | table         | type  | possible_keys | key     | key_len | ref  | rows  | Extra                    |
+----+--------------------+---------------+-------+---------------+---------+---------+------+-------+--------------------------+
|  1 | PRIMARY            | 006_kh        | index | NULL          | PRIMARY | 4       | NULL | 96767 | Using where; Using index |
|  2 | DEPENDENT SUBQUERY | <derived3>    | ALL   | NULL          | NULL    | NULL    | NULL | 24099 | Using where              |
|  3 | DERIVED            | uzone_2701_kh | ALL   | NULL          | NULL    | NULL    | NULL | 24256 | Using where              |
+----+--------------------+---------------+-------+---------------+---------+---------+------+-------+--------------------------+
3 rows in set (0.02 sec)


(2)第二种方式 :

sql脚本 :

select count(a.kh_id)  from 011_kh a inner join uzone_2701_kh b on a.kh_id = b.khbh where b.uzbh ='180' and  b.jgm='27010899'

使用 desc 命令分析,结果如下:

mysql> 
mysql> desc select count(a.kh_id)  from 011_kh a inner join uzone_2701_kh b on a.kh_id = b.khbh where b.uzbh ='180' and  b.jgm='27010899'  ;
+----+-------------+-------+--------+---------------+---------+---------+--------------------+-------+-------------+
| id | select_type | table | type   | possible_keys | key     | key_len | ref                | rows  | Extra       |
+----+-------------+-------+--------+---------------+---------+---------+--------------------+-------+-------------+
|  1 | SIMPLE      | b     | ALL    | NULL          | NULL    | NULL    | NULL               | 24256 | Using where |
|  1 | SIMPLE      | a     | eq_ref | PRIMARY       | PRIMARY | 4       | dxzs_v2_new.b.khbh |     1 | Using index |
+----+-------------+-------+--------+---------------+---------+---------+--------------------+-------+-------------+
2 rows in set (0.00 sec)



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论