iis7网站绑定域名,网站被谷歌收录,一个可以做行程的网站,爱站网关键字查询mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询#xff0c;如需要生成一个空表结构#xff1a;
select col1,col2 into #t from t where 10
这类代码不会返回任何结果集#xff0c;但是会消耗系统资源的#xff0c;应改成这样#xff1a;
create table #t…mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询如需要生成一个空表结构
select col1,col2 into #t from t where 10
这类代码不会返回任何结果集但是会消耗系统资源的应改成这样
create table #t(...) 很多时候用 exists 代替 in 是一个好的选择
select num from a where num in(select num from b)
用下面的语句替换
select num from a where exists(select 1 from b where numa.num) 应尽量避免在 where 子句中使用 or 来连接条件否则将导致引擎放弃使用索引而进行全表扫描如
select id from t where num10 or num20
可以这样查询
select id from t where num10
union all
select id from t where num20 应尽量避免在 where 子句中对字段进行表达式操作这将导致引擎放弃使用索引而进行全表扫描。如
select id from t where num/2100
应改为:select id from t where num100*2 应尽量避免在where子句中对字段进行函数操作这将导致引擎放弃使用索引而进行全表扫描。如
select id from t where substring(name,1,3)abc--name以abc开头的id
select id from t where datediff(day,createdate,2005-11-30)0--2005-11-30生成的id
应改为:
select id from t where name like abc%
select id from t where createdate2005-11-30 and createdate2005-12-1 下面的查询也将导致全表扫描
select id from t where name like %abc%
对于 like ..% (不以 % 开头)可以应用 colunm上的index in 和 not in 也要慎用否则会导致全表扫描如
select id from t where num in(1,2,3)
对于连续的数值能用 between 就不要用 in 了
select id from t where num between 1 and 3 如果在 where 子句中使用参数也会导致全表扫描。因为SQL只有在运行时才会解析局部变量但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而如果在编译时建立访问计划变量的值还是未知的因而无法作为索引选择的输入项。如下面语句将进行全表扫描
select id from t where numnum
可以改为强制查询使用索引
select id from t with(index(索引名)) where numnum 不要在 where 子句中的“”【左边】进行函数、算术运算或其他表达式运算否则系统将可能无法正确使用索引。 在使用索引字段作为条件时如果该索引是【复合索引】那么必须使用到该索引中的【第一个字段】作为条件时才能保证系统使用该索引否则该索引将不会被使用。并且应【尽可能】的让字段顺序与索引顺序相一致。字段顺序也可以不与索引顺序一致但是一定要包含【第一个字段】。 对查询进行优化应尽量避免全表扫描首先应考虑在 where 及 order by涉及的列上建立索引。 应尽量避免在 where 子句中使用 !或 操作符否则将引擎放弃使用索引而进行全表扫描。 应尽量避免在 where 子句中对字段进行 null 值 判断否则将导致引擎放弃使用索引而进行全表扫描如
select id from t where num is null
可以在num上设置默认值0确保表中num列没有null值然后这样查询
select id from t where num0 并不是所有索引对查询都有效SQL是根据表中数据来进行查询优化的当索引列有大量数据重复时SQL查询可能不会去利用索引如一表中有字段sexmale、female几乎各一半那么即使在sex上建了索引也对查询效率起不了作用。 尽量使用表变量来代替临时表。如果表变量包含大量数据请注意索引非常有限(只有主键索引)。 避免频繁创建和删除临时表以减少系统表资源的消耗。 临时表并不是不可使用适当地使用它们可以使某些例程更有效例如当需要重复引用大型表或常用表中的某个数据集时。但是对于一次性事件最好使用导出表。 在新建临时表时如果一次性插入数据量很大那么可以使用 select into 代替 create table避免造成大量 log 以提高速度;如果数据量不大为了缓和系统表的资源应先create table然后insert。 如果使用到了临时表在存储过程的最后务必将所有的临时表显式删除先 truncate table 然后 drop table 这样可以避免系统表的较长时间锁定。 尽量避免使用游标因为游标的效率较差如果游标操作的数据超过1万行那么就应该考虑改写。 与临时表一样游标并不是不可使用。对小型数据集使用 FAST_FORWARD 游标通常要优于其他逐行处理方法尤其是在必须引用几个表才能获得所需的数据时。在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时间允许基于游标的方法和基于集的方法都可以尝试一下看哪一种方法的效果更好。 在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON 在结束时设置 SET NOCOUNT OFF 。无需在执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息。 尽量避免向客户端返回大数据量若数据量过大应该考虑相应需求是否合理。 尽量避免大事务操作提高系统并发能力。 绝对不要轻易用order by rand() 很可能会导致mysql的灾难 每个表都应该设置一个ID主键最好的是一个INT型并且设置上自动增加的AUTO_INCREMENT标志这点其实应该作为设计表结构的第一件必然要做的事 拆分大的 DELETE 或 INSERT 语句。因为这两个操作是会锁表的表一锁住了别的操作都进不来了就我来说 有时候我宁愿用for循环来一个个执行这些操作。 永远别要用复杂的mysql语句来显示你的聪明。就我来说看到一次关联了三四个表的语句只会让人觉得很不靠谱。 使用基于游标的方法或临时表方法之前应先寻找基于集的解决方案来解决问题基于集的方法通常更有效。 索引并不是越多越好索引固然可以提高相应的 select 的效率但同时也降低了 insert 及 update 的效率因为 insert 或 update 时有可能会重建索引所以怎样建索引需要慎重考虑视具体情况而定。一个表的索引数最好不要超过6个若太多则应考虑一些不常使用到的列上建的索引是否有必要。 应尽可能的避免更新 clustered 索引数据列因为 clustered 索引数据列的顺序就是表记录的物理存储顺序一旦该列值改变将导致整个表记录的顺序的调整会耗费相当大的资源。若应用系统需要频繁更新 clustered 索引数据列那么需要考虑是否应将该索引建为 clustered 索引。 尽量使用数字型字段若只含数值信息的字段尽量不要设计为字符型这会降低查询和连接的性能并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符而对于数字型而言只需要比较一次就够了。 尽可能的使用 varchar/nvarchar 代替 char/nchar 因为首先变长字段存储空间小可以节省存储空间其次对于查询来说在一个相对较小的字段内搜索效率显然要高些。 任何地方都不要使用 select * from t 用具体的字段列表代替“*”不要返回用不到的任何字段。 MySQL无法使用索引的情况总结
(1)字段使用函数将无法使用索引
(2)Join 语句中 Join 条件字段类型不一致的时候 MySQL 无法使用索引
(3)复合索引的情况下如果查询条件不包含索引列的最左边部分即不满足最左前缀原则则不会使用索引
(4)如果mysql估计使用索引扫描比全表扫描更慢则不使用索引。(扫描数据超过30%都会走全表)
(5)以%开头的like查询
(6)数据类型出现隐式转换的时候也不会使用索引特别是当列类型是字符串那么一定记得在where条件中把字符串常量值用引号引起来否则即便这个列上有索引MySQL也不会用到因为MySQL默认把输入的常量值进行转换以后才进行检索
(7)用or分割开的条件如果 or前的条件中的列有索引而后面的列中没有索引那么涉及的索引都不会被用到 文章转载自: http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.fxkgp.cn.gov.cn.fxkgp.cn http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn http://www.morning.qnzgr.cn.gov.cn.qnzgr.cn http://www.morning.tlfyb.cn.gov.cn.tlfyb.cn http://www.morning.hwcln.cn.gov.cn.hwcln.cn http://www.morning.qxkcx.cn.gov.cn.qxkcx.cn http://www.morning.rqdx.cn.gov.cn.rqdx.cn http://www.morning.fwzjs.cn.gov.cn.fwzjs.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.lveyue.com.gov.cn.lveyue.com http://www.morning.mfnsn.cn.gov.cn.mfnsn.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.mhmsn.cn.gov.cn.mhmsn.cn http://www.morning.bxczt.cn.gov.cn.bxczt.cn http://www.morning.lptjt.cn.gov.cn.lptjt.cn http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn http://www.morning.mkpqr.cn.gov.cn.mkpqr.cn http://www.morning.prmbb.cn.gov.cn.prmbb.cn http://www.morning.grqlc.cn.gov.cn.grqlc.cn http://www.morning.nzlqt.cn.gov.cn.nzlqt.cn http://www.morning.npbkx.cn.gov.cn.npbkx.cn http://www.morning.ynrzf.cn.gov.cn.ynrzf.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn http://www.morning.sjwiki.com.gov.cn.sjwiki.com http://www.morning.gzttoyp.com.gov.cn.gzttoyp.com http://www.morning.tntbs.cn.gov.cn.tntbs.cn http://www.morning.kycwt.cn.gov.cn.kycwt.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.lwtld.cn.gov.cn.lwtld.cn http://www.morning.kybjr.cn.gov.cn.kybjr.cn http://www.morning.dxzcr.cn.gov.cn.dxzcr.cn http://www.morning.mhnd.cn.gov.cn.mhnd.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.zlcsz.cn.gov.cn.zlcsz.cn http://www.morning.yhwxn.cn.gov.cn.yhwxn.cn http://www.morning.hnrpk.cn.gov.cn.hnrpk.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn http://www.morning.rwrn.cn.gov.cn.rwrn.cn http://www.morning.jqjnx.cn.gov.cn.jqjnx.cn http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn http://www.morning.yppln.cn.gov.cn.yppln.cn http://www.morning.sqgsx.cn.gov.cn.sqgsx.cn http://www.morning.slfmp.cn.gov.cn.slfmp.cn http://www.morning.nlgyq.cn.gov.cn.nlgyq.cn http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn http://www.morning.hmsong.com.gov.cn.hmsong.com http://www.morning.atoinfo.com.gov.cn.atoinfo.com http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn http://www.morning.lzqnj.cn.gov.cn.lzqnj.cn http://www.morning.lhxdq.cn.gov.cn.lhxdq.cn http://www.morning.gxfzrb.com.gov.cn.gxfzrb.com http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn http://www.morning.mbfj.cn.gov.cn.mbfj.cn http://www.morning.ghzfx.cn.gov.cn.ghzfx.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.hcgbm.cn.gov.cn.hcgbm.cn http://www.morning.yxshp.cn.gov.cn.yxshp.cn http://www.morning.darwallet.cn.gov.cn.darwallet.cn http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn http://www.morning.rzscb.cn.gov.cn.rzscb.cn http://www.morning.qygfb.cn.gov.cn.qygfb.cn http://www.morning.rkfgx.cn.gov.cn.rkfgx.cn http://www.morning.wcgfy.cn.gov.cn.wcgfy.cn http://www.morning.ydhmt.cn.gov.cn.ydhmt.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.cndxl.cn.gov.cn.cndxl.cn http://www.morning.cqrenli.com.gov.cn.cqrenli.com http://www.morning.mfbcs.cn.gov.cn.mfbcs.cn http://www.morning.rqgq.cn.gov.cn.rqgq.cn http://www.morning.stmkm.cn.gov.cn.stmkm.cn http://www.morning.stprd.cn.gov.cn.stprd.cn http://www.morning.llllcc.com.gov.cn.llllcc.com http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn http://www.morning.sfcfy.cn.gov.cn.sfcfy.cn http://www.morning.zbnts.cn.gov.cn.zbnts.cn http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn