MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2405|回复: 2
打印 上一主题 下一主题

mysqldumpslow找到的sql,查询不明白?

[复制链接]
跳转到指定楼层
1#
发表于 2011-9-15 14:09:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
rt
偶是oracle dba,刚管理mysql,学习中。。。
mysqldumpslow -s c -t 20 host-slow.log  按执行次序

Count: 270  Time=14.71s (3971s)  Lock=0.00s (0s)  Rows=1.0 (270), fan[fan]@3hosts
  SELECT count(*) AS count_all FROM `tuan_coupons` WHERE (operator_id in (N) and consume = N)


我在数据库里
SELECT * FROM `tuan_coupons` WHERE (operator_id IN ('N') AND consume = 'N')
可以查询,需要在N 加上单引号

结果operator_id  的值为0

不明白 WHERE (operator_id IN ('N') AND consume = 'N') 是神马意思

SELECT * FROM tuan_coupons t limit 10 查询operator_id为NULL或都有数值

数据类型
`operator_id` int(11) DEFAULT NULL
`consume` smallint(6) DEFAULT '0'

如果做优化,因为只有一个值,可以把 in 换成 = ?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2011-9-15 14:19:48 | 只看该作者
那是慢日志工具统计出来的报表,是个泛指,总结出了句型。N代表具体值。
当然,一个值时,最好用=代替IN,另外注意where字段中的索引。
3#
 楼主| 发表于 2011-9-15 14:38:56 | 只看该作者
本帖最后由 saup007 于 2011-9-15 14:42 编辑
kider 发表于 2011-9-15 14:19
那是慢日志工具统计出来的报表,是个泛指,总结出了句型。N代表具体值。
当然,一个值时,最好用=代替IN, ...


谢谢。

但是我在mysql SQLyog Enterprise工具查询
单独用sql查询
SELECT t.operator_id,t.consume FROM tuan_coupons t WHERE (t.operator_id IN ('N') AND t.consume = 'N')
可能类型为int,'N'不代表字符串,只是泛指。。。

显示operator_id值为0
显示consume值也为0


还有,t.id in (a,b) ,改写为t.id=a or t.id=b 吧,多少in 结果与or的效率平衡。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-9-20 05:48 , Processed in 0.080345 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表