MySQL查询时条件的顺序_mysql中查询条件的先后顺序问
题?
听⼀个讲座,说查询条件的顺序影响查询速度,⽐如⼀个先运⾏⼀个⾼门槛的条件,后低门槛,运⾏速度会相对快,请问有这种事么?
那么我在写thinkphp的查询语句的时候,是不是应该把⾼门槛的放在前⾯查询?
数据库没这么笨的。
例如这个表:
CREATE TABLE `user_customer` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID号',
`uid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '⼈员ID号',
`cid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '客户ID号',hadoop怎么在文本添加内容
PRIMARY KEY (`id`),
KEY `uid_cid` (`uid`,`cid`)
网页特效代码工具) ENGINE=InnoDB AUTO_INCREMENT=18227 DEFAULT CHARSET=utf8哈夫曼树编码用到什么算法
假设共有1千万条数据,uid > 1500的有40万条,cid > 1000000的有100万条,那么下⾯两个SQL那个快?
select count(1) from user_customer where uid > 1500 and cid > 1000000;
select count(1) from user_customer where cid > 1000000 and uid > 1500;mysql语句顺序
是⼀样快的,因为数据库知道有uid_cid这个索引,会调整成先筛uid再筛cid的。
当然,建不同的索引会有不同的效率,但是索引定了,查询条件的顺序是没影响的,例如组合索引的顺序改成
cid,uid
,那样查询效率是不同的。
在数据库优化⽅⾯,经常有⼀些似是⽽⾮的说法。
selector app csdn查询条件顺序对性能的影响,按照我的了解,很早之前oracle 7及之前版本的时候,数据库的优化器确定执⾏计划的时候,是按照RBO的模式,可能对条件语句的顺序有要求(注意也仅仅是可能)。现在的数据库,数据库将查询语句做表达式分解后,会⾃⾏判断哪种⽅式效率最⾼,单表查询主要是判断全表扫描、索引或使⽤哪个索引,就所谓的CBO模式,这时候和查询条件的顺序就完全没有关系了。
另外,判断⼀个说法是否正确最好的做法是⾃⼰动⼿测试,通过查看执⾏计划和响应时间,oracle的话可以根据物理读、逻辑读、Cost⼤⼩等,很容易判断出真伪。
语言cos软件推荐我去,这是哪的讲座啊, 执⾏⼀条sql语句就是发送⼀条申请,然后服务器返回数据,查询的时候 条件多少和是字段的设置⽐如*和字段名有关,然后在从数据库中发出来 个⼈觉得 并⽆影响 你要是想快可以⽤memcache 或者redis做缓存 内存肯定⽐机械快啊 ,主要还是你先优化好你的sql吧,最后可以做⼀下更⾼级的,集啊
可以查看数据库查询实现的过程。提交查询语句之后,数据库查询解析器会对查询语句进⾏处理,合并相同的条件,去掉没⽤的条件,通过查询优化器选择最优的查询⽅式。所以,查询条件的前后顺序没有多⼤影响
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论