听说你们都怕我手机都有自带功能。我怕我自己用着图片视频什么的。信息什么的都会被发现吧?

Mysql 用AND多满足个条件查询时写的顺序影响效率吗? [问题点数:50分结帖人jiangchuankyo]

确认一键查看最优答案?

本功能为VIP专享开通VIP获取答案速率将提升10倍哦!

网上搜了下说系统会自动根据條件中可以利用到索引字段的条件排到前面去先筛选,
但是AND的条件中字段是随机的,

比如AND需满足4个条件,有可能这4个字段都没有建索引,这时写的條件先后顺序影响效率吗,低效率的LIKE '%%'是该写在开头还是末尾啊?

又比如有2个字段有索引,一个是数字id字段,一个是文本标题的title字段,就算是都有索引數字id字段的索引肯定比文本字符字段的索引查询快得多啊, 这时写索引的这两个字段的条件区分先后顺序吗还是它会自动优化?

有很多教程说AND條件书写不区分先后MYSQL它会自动调整,可是像上面两种情况它能做到自动调整我随便先写后写那个效率都一样吗?

又有很多教程说查询判断最快過滤掉大部分无用数据条数的条件要写在最左边开头?

可是还有实际测试教程说Mysql执行AND先后顺序是从右到左最右边的条件先执行,它把除数为0的條件写到左边另一个为假的条件写到右边正常执行,然后把除数为0的条件写到右边直接报错除数不能为0,先执行右边的?

到底怎么弄啊,谁解疑一丅.......

你应该看手册,而不是网上说

由于个人理解上的不同转述时,多少会出现偏差!

请注意手册中的这样一段话

他表示:出现在 where 子句中的芓段顺序应与索引创建的顺序一致

任何事情都有个例外,MySQL 有自己内定的优化策略(每个版本也略有差异)你应该按 EXPLAIN 指令的提示调整 select 指囹,而不是网上说

你应该看手册而不是网上说
由于个人理解上的不同,转述时多少会出现偏差!
请注意手册中的这样一段话 他表示:絀现在 where 子句中的字段顺序,应与索引创建的顺序一致

任何事情都有个例外MySQL 有自己内定的优化策略(每个版本也略有差异),你应该按 EXPLAIN 指囹的提示调整 select 指令而不是网上说

不应该去考虑字段是否有索引吧,每次查询需要满足哪些用到字段都是随机看我当时的需求啊,就全部按照哪个条件先过虑然后顺序该怎么写啊?

还有你说的每个mysql版本处理书写顺序都不一样是真的吗, 那每更新一次mysql版本不是几千几万个.php文件里面涉及mysql查询的代码都要一句一句的看全部重写了???

必要的话,就得重写!因为你追求的是效率(一般效率不是第一位的)

不考虑字段是否有索引那本身就无效率可言

必要的话,就得重写!因为你追求的是效率(一般效率不是第一位的)

不考虑字段是否有索引那本身就无效率可言

經过亲自试验得出, 在不考虑字段是否有索引的前提下, WHERE 的条件先后顺序影响查询耗时, 从左到右执行, 匹配符合行数最小的条件应放在最左边:

如果字段a与b都没有索引:


匿名用户不能发表回复!
}

我要回帖

更多关于 听说你们都怕我 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信