- 浏览: 319043 次
- 性别:
- 来自: 西宁
文章分类
- 全部博客 (120)
- Java Thought (29)
- Java Pattern (4)
- Data Base (7)
- Algorithm Design (33)
- Linux (0)
- Mysql (2)
- Oracle (0)
- ConstructionDesign-架构 (5)
- Spring Platform (0)
- Tomcat (1)
- JavaScript (7)
- Web System (3)
- MS SQLServer (1)
- 软件哲学 (6)
- View (3)
- Java GUI (4)
- CSSDIV (7)
- CloudComputing (0)
- WebService (0)
- SystemOrProject (2)
- SOA (0)
- 互转共享 (3)
- 偶尔java习题 (0)
- Thinks with does (1)
最新评论
-
sassds:
佩服啊 高手
分享一款js特效 -
bhjackson:
学习啦,能否详细介绍下回溯的过程?O(∩_∩)O谢谢
分享回溯法- 找n个数中r个数的组合 -
zk7019311:
了解了解。。。。。
业务层代码复用的一点建议 -
lijie1819:
看到LZ的设计思想,感觉和抽象工厂模式有点相像。
业务层代码复用的一点建议 -
wjjcml1982:
酷毙了!楼主太强悍了!
分享一款js特效
也许很多人在开发多条件查询或模糊查询的时候,为保证不管选择哪种过滤条件总保证查询条件为true,于是在where子句后选择1=1或者0=0技巧来满足模糊查询。当然这的确对开发人员来说是一个不错的技巧。于是我在Mysql中通过上千万条的数据测试发现很耗性能。即便是建了常用字段的索引(排序)也没有作用,足以确定1=1很低效,大数据量很耗性能。
select * from t_user where 1=1
因为添加了"1=1"的过滤条件以后数据库系统无法使用索引等优化查询策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)来比较此行是否满足顾虑条件,当表中数据量比较大的时候查询速度会非常慢。
--------------------
maoone2003的回答甚是不错(红色部分) 作为开题人 我采纳...
select * from table where 1=1因为table中根本就没有名称为1的字段,所以该SQL等效于select * from table,这个SQL语句很明显是全表扫描,需要大量的IO操作,数据量越大越慢,建议查询时增加必输项,即where 1=1后面追加一些常用的必选条件,并且将这些必选条件建立适当的索引,效率会大大提高
PS:这不是SQL写法的问题,也不是数据库的问题,是自己程序逻辑的问题
评论
121 楼
maozj
2010-07-15
superyang 写道
抛出异常的爱 写道
superyang 写道
pujia12345 写道
我靠,帖子讨论的是where 1=1,你们在这里讨论“科普级”的String和StringBuffer。
都是菜鸟/新手?
晕
都是菜鸟/新手?
晕
一个贴子可以全方位讨论,多管齐下...
都是老手了,异常大哥都出来了,可却还不知道1+1等于几?
这是一个哲学问题...
异常大哥也说过:在je上这样讨论下去的结果都是隐藏掉的.....你们不给我面子,也要给异常大哥面子,有的人在挽救,有的人却在抹杀....
我的确不知道 1=1 在数据库中是否会用到索引
我出来只是解释一下 在写代码时为什么会用 1=1 来占位.
PS: 我认为普通 的执行计划 有没有 1=1 应该是没什么影响的.
但最近正在学习动态执行计划时 可能这两个句法使用的不是同一个执行计划.
这就是贴子的精华所在,哪怕只有一滴,也要把它讨论出来,这些精华而不是投隐藏投出来的..
-----------------------------------------
很有共同点 甚是欣慰 姑娘很真实
120 楼
maozj
2010-07-15
kj23 写道
maozj 写道
看成本...这是SqlServer中的测试
如果去掉where 1=1
成本为0%
那你为什么不顺手把去掉1=1的execution plan截图贴出来。测试没有发现你说的问题。
------------------------------
---------------
再次引用
119 楼
maozj
2010-07-15
---------------
再次引用
118 楼
jacki6
2010-07-15
<p>刚在db2上试了下,不管加没加where1=1 ,如果没有其他条件,都是做全表扫描,而且其访问计划都是一样的<br><img src="http://dl.iteye.com/upload/attachment/278095/8f3e3473-fdb2-34a7-8f91-8bfac14acc6a.jpg" alt=""></p>
<p><br><img src="http://dl.iteye.com/upload/attachment/278097/0a9f2049-6d35-3ed1-aaf7-74895fa07c36.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>而加其他的有索引的查询条件时,查询还是使用索引了</p>
<p><br><img src="http://dl.iteye.com/upload/attachment/278099/b81d76b6-37ea-3db5-b644-199bc598060f.jpg" alt=""></p>
<p><img alt=""><img alt=""></p>
<p><br><img src="http://dl.iteye.com/upload/attachment/278097/0a9f2049-6d35-3ed1-aaf7-74895fa07c36.jpg" alt=""></p>
<p> </p>
<p> </p>
<p>而加其他的有索引的查询条件时,查询还是使用索引了</p>
<p><br><img src="http://dl.iteye.com/upload/attachment/278099/b81d76b6-37ea-3db5-b644-199bc598060f.jpg" alt=""></p>
<p><img alt=""><img alt=""></p>
117 楼
superyang
2010-07-15
抛出异常的爱 写道
superyang 写道
pujia12345 写道
我靠,帖子讨论的是where 1=1,你们在这里讨论“科普级”的String和StringBuffer。
都是菜鸟/新手?
晕
都是菜鸟/新手?
晕
一个贴子可以全方位讨论,多管齐下...
都是老手了,异常大哥都出来了,可却还不知道1+1等于几?
这是一个哲学问题...
异常大哥也说过:在je上这样讨论下去的结果都是隐藏掉的.....你们不给我面子,也要给异常大哥面子,有的人在挽救,有的人却在抹杀....
我的确不知道 1=1 在数据库中是否会用到索引
我出来只是解释一下 在写代码时为什么会用 1=1 来占位.
PS: 我认为普通 的执行计划 有没有 1=1 应该是没什么影响的.
但最近正在学习动态执行计划时 可能这两个句法使用的不是同一个执行计划.
这就是贴子的精华所在,哪怕只有一滴,也要把它讨论出来,这些精华而不是投隐藏投出来的..
116 楼
kj23
2010-07-15
maozj 写道
看成本...这是SqlServer中的测试
如果去掉where 1=1
成本为0%
那你为什么不顺手把去掉1=1的execution plan截图贴出来。测试没有发现你说的问题。
115 楼
抛出异常的爱
2010-07-15
maozj 写道
楼上的人很纯熟 技术熟练 并能处处帮助别人 为人解答 很敬业也很富足
歪楼又不是我一个人的功劳.
歪楼又不是javaeye上的独创
114 楼
maozj
2010-07-15
楼上的人很纯熟 技术熟练 并能处处帮助别人 为人解答 很敬业也很富足
113 楼
抛出异常的爱
2010-07-15
superyang 写道
pujia12345 写道
我靠,帖子讨论的是where 1=1,你们在这里讨论“科普级”的String和StringBuffer。
都是菜鸟/新手?
晕
都是菜鸟/新手?
晕
一个贴子可以全方位讨论,多管齐下...
都是老手了,异常大哥都出来了,可却还不知道1+1等于几?
这是一个哲学问题...
异常大哥也说过:在je上这样讨论下去的结果都是隐藏掉的.....你们不给我面子,也要给异常大哥面子,有的人在挽救,有的人却在抹杀....
我的确不知道 1=1 在数据库中是否会用到索引
我出来只是解释一下 在写代码时为什么会用 1=1 来占位.
PS: 我认为普通 的执行计划 有没有 1=1 应该是没什么影响的.
但最近正在学习动态执行计划时 可能这两个句法使用的不是同一个执行计划.
112 楼
maozj
2010-07-15
superyang 写道
pujia12345 写道
我靠,帖子讨论的是where 1=1,你们在这里讨论“科普级”的String和StringBuffer。
都是菜鸟/新手?
晕
都是菜鸟/新手?
晕
一个贴子可以全方位讨论,多管齐下...
都是老手了,异常大哥都出来了,可却还不知道1+1等于几?
这是一个哲学问题...
异常大哥也说过:在je上这样讨论下去的结果都是隐藏掉的.....你们不给我面子,也要给异常大哥面子,有的人在挽救,有的人却在抹杀....
一个贴子可以全方位讨论,多管齐下... 当然会很欣慰 你也不失风采 呵呵
111 楼
superyang
2010-07-15
pujia12345 写道
我靠,帖子讨论的是where 1=1,你们在这里讨论“科普级”的String和StringBuffer。
都是菜鸟/新手?
晕
都是菜鸟/新手?
晕
一个贴子可以全方位讨论,多管齐下...
都是老手了,异常大哥都出来了,可却还不知道1+1等于几?
这是一个哲学问题...
异常大哥也说过:在je上这样讨论下去的结果都是隐藏掉的.....你们不给我面子,也要给异常大哥面子,有的人在挽救,有的人却在抹杀....
110 楼
bingufo
2010-07-15
表的列数多的时候,可能看的效果比较明显吧
109 楼
pujia12345
2010-07-14
我靠,帖子讨论的是where 1=1,你们在这里讨论“科普级”的String和StringBuffer。
都是菜鸟/新手?
晕
都是菜鸟/新手?
晕
108 楼
icefishc
2010-07-14
litchi 写道
inshua 写道
litchi 写道
0 != 1, 1 = 1 这种代码在某些安全性比较高的军工,能源等企业,是不允许被使用的。
怎么又跟安全扯上关系了
0 != 1 1 = 1这种sql可不是注入攻击中最常用的,所以有些公司直接做了一个过滤器,所有包含这些模式的语句直接不让执行。
我们就做过这么一个企业。
这个工具做在哪 一层上呢?
那岂不是很多工具用不了了
107 楼
litchi
2010-07-14
inshua 写道
litchi 写道
0 != 1, 1 = 1 这种代码在某些安全性比较高的军工,能源等企业,是不允许被使用的。
怎么又跟安全扯上关系了
0 != 1 1 = 1这种sql可不是注入攻击中最常用的,所以有些公司直接做了一个过滤器,所有包含这些模式的语句直接不让执行。
我们就做过这么一个企业。
106 楼
徐风子
2010-07-14
<div class="quote_title">superyang 写道</div>
<div class="quote_div">
<div class="quote_title">徐风子 写道</div>
<div class="quote_div">
<p><br>一群大哥们,现在不是一件2010年了吗,怎么大家还是在StringBuffer呀,好歹用个 StringBuilder呀。<br>“比如string可以自己用buffer解析” 高司令这么承诺的,我还是一直比较相信,而且反编译字节码以后都是这样的。<br>比如</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}</pre>
<p> 会优化为:</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += new StringBuider(" and e.name like '%").append(email_type).append("%'";)
}
//大概这样,记不太清了。</pre>
<p>但是变量不会优化的,所以在用StringBuilder一般是在变量循环的时候用。</p>
<p> </p>
<p>还有我最气愤的是:</p>
<pre name="code" class="java">if (!this.isNull(email_type))</pre>
<p> 这是什么东西呀! 明明是静态工具方法,不放到单独的工具类中,还要放到父类里面,放到父类里面就算了,还要用用成员方法来使用,太难看了!</p>
</div>
<p><br> 放到基类去了,用this这样引用可能打代码快一点..</p>
<p> 如果方法名字很长的话,真不知道怎样去索引出来..</p>
</div>
<p> </p>
<p>这东西明明该在工具类怎么跑基类去了</p>
<p>再说了,代码,容易看比容易写更重要!</p>
<div class="quote_div">
<div class="quote_title">徐风子 写道</div>
<div class="quote_div">
<p><br>一群大哥们,现在不是一件2010年了吗,怎么大家还是在StringBuffer呀,好歹用个 StringBuilder呀。<br>“比如string可以自己用buffer解析” 高司令这么承诺的,我还是一直比较相信,而且反编译字节码以后都是这样的。<br>比如</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}</pre>
<p> 会优化为:</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += new StringBuider(" and e.name like '%").append(email_type).append("%'";)
}
//大概这样,记不太清了。</pre>
<p>但是变量不会优化的,所以在用StringBuilder一般是在变量循环的时候用。</p>
<p> </p>
<p>还有我最气愤的是:</p>
<pre name="code" class="java">if (!this.isNull(email_type))</pre>
<p> 这是什么东西呀! 明明是静态工具方法,不放到单独的工具类中,还要放到父类里面,放到父类里面就算了,还要用用成员方法来使用,太难看了!</p>
</div>
<p><br> 放到基类去了,用this这样引用可能打代码快一点..</p>
<p> 如果方法名字很长的话,真不知道怎样去索引出来..</p>
</div>
<p> </p>
<p>这东西明明该在工具类怎么跑基类去了</p>
<p>再说了,代码,容易看比容易写更重要!</p>
105 楼
smallsnake
2010-07-14
liudun 写道
willko 写道
Mysql有查询优化器,像这种直接过滤了。。
我印象中也是这样的。哪个数据库这么弱智,1=1、2=2这种明显的占位条件都不知道去掉吗?
我赞成,我之前的几个电信项目经常用,华为那帮性能测试也没问题,
PS:数据量级是:1000千万
104 楼
smallsnake
2010-07-14
pi1ot 写道
我怎么从来没遇到过需要这么用的时候,举个例子
这个where 1 = 1 经常用在动态的条件查询上面
PS:这个经常用Ibatis的人,会很有感触
103 楼
superyang
2010-07-14
<div class="quote_title">徐风子 写道</div>
<div class="quote_div">
<p><br>一群大哥们,现在不是一件2010年了吗,怎么大家还是在StringBuffer呀,好歹用个 StringBuilder呀。<br>“比如string可以自己用buffer解析” 高司令这么承诺的,我还是一直比较相信,而且反编译字节码以后都是这样的。<br>比如</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}</pre>
<p> 会优化为:</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += new StringBuider(" and e.name like '%").append(email_type).append("%'";)
}
//大概这样,记不太清了。</pre>
<p>但是变量不会优化的,所以在用StringBuilder一般是在变量循环的时候用。</p>
<p> </p>
<p>还有我最气愤的是:</p>
<pre name="code" class="java">if (!this.isNull(email_type))</pre>
<p> 这是什么东西呀! 明明是静态工具方法,不放到单独的工具类中,还要放到父类里面,放到父类里面就算了,还要用用成员方法来使用,太难看了!</p>
</div>
<p><br> 放到基类去了,用this这样引用可能打代码快一点..</p>
<p> 如果方法名字很长的话,真不知道怎样去索引出来..</p>
<div class="quote_div">
<p><br>一群大哥们,现在不是一件2010年了吗,怎么大家还是在StringBuffer呀,好歹用个 StringBuilder呀。<br>“比如string可以自己用buffer解析” 高司令这么承诺的,我还是一直比较相信,而且反编译字节码以后都是这样的。<br>比如</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}</pre>
<p> 会优化为:</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += new StringBuider(" and e.name like '%").append(email_type).append("%'";)
}
//大概这样,记不太清了。</pre>
<p>但是变量不会优化的,所以在用StringBuilder一般是在变量循环的时候用。</p>
<p> </p>
<p>还有我最气愤的是:</p>
<pre name="code" class="java">if (!this.isNull(email_type))</pre>
<p> 这是什么东西呀! 明明是静态工具方法,不放到单独的工具类中,还要放到父类里面,放到父类里面就算了,还要用用成员方法来使用,太难看了!</p>
</div>
<p><br> 放到基类去了,用this这样引用可能打代码快一点..</p>
<p> 如果方法名字很长的话,真不知道怎样去索引出来..</p>
102 楼
徐风子
2010-07-14
<div class="quote_title">抛出异常的爱 写道</div>
<div class="quote_div">
<div class="quote_title">qchong 写道</div>
<div class="quote_div">
<div class="quote_title">ywlqi 写道</div>
<div class="quote_div">
<div class="quote_title">Das_flamen 写道</div>
<div class="quote_div">
<div class="quote_title">superyang 写道</div>
<div class="quote_div">
<div class="quote_title">抛出异常的爱 写道</div>
<div class="quote_div">
<pre name="code" class="java">
StringBuffer buffer = new StringBuffer("select * from T where 1=1 ");
for(Map.Enty e : map){
buffer .appand ("and "+ e.getKey()+" = '"+e.getValue()+"'");
}
</pre>
</div>
<br><br><br><pre name="code" class="java"> String hql = "select e.id,e.name,e.provice,e.city,e.total,date_format(e.addtime,'%Y-%m-%d'),a.name,date_format(e.sendtime,'%Y-%m-%d') from email e,admin a where e.add_admin_id=a.id";
if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}
if (!this.isNull(provice)) {
hql += " and e.provice like '%" + provice + "%'";
}
if (!this.isNull(city)) {
hql += " and e.city like '%" + city + "%'";
}
if (!this.isNull(name)) {
hql += " and e.name like '%" + name + "%'";
}
if (!this.isNull(add_admin_id)) {
hql += " and e.adminByAddAdminId.id='" + add_admin_id + "'";
}
if (!this.isNull(order_type)) {
String arr[] = order_type.split("_");
hql += " order by e." + arr[0] + " " + arr[1];
hql += ",e.addtime desc";
} else {
hql += " e.addtime desc";
}
</pre>
<br><br>这样写可不可以??<br>为什么很多人用StringBuffer的..???</div>
<br>你可以去试下,StringBuffer的效率不是String能比的,拼接的时候String多了严重影响性能。当然,如果就几条那也没什么,不过强烈推荐不要用String,不是个好习惯。</div>
<br><br>我记得有帖子说过jdk1.5以后对字符串相加做了优化,效率和StringBuffer一样了啊,我没做过实验,谁做过实验的来说两句</div>
<br>在编译的时候,确实会适时的将字符串拼接转成StringBuilder<br>
</div>
<br>别信任何jvm作出的承诺<br>比如线程优先级<br>比如某string池的优化<br>比如string可以自己用buffer解析<br>
</div>
<p><br><br>一群大哥们,现在不是一件2010年了吗,怎么大家还是在StringBuffer呀,好歹用个 StringBuilder呀。<br>“比如string可以自己用buffer解析” 高司令这么承诺的,我还是一直比较相信,而且反编译字节码以后都是这样的。<br>比如</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}</pre>
<p> 会优化为:</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += new StringBuider(" and e.name like '%").append(email_type).append("%'";)
}
//大概这样,记不太清了。</pre>
<p>但是变量不会优化的,所以在用StringBuilder一般是在变量循环的时候用。</p>
<p> </p>
<p>还有我最气愤的是:</p>
<pre name="code" class="java">if (!this.isNull(email_type))</pre>
<p> 这是什么东西呀! 明明是静态工具方法,不放到单独的工具类中,还要放到父类里面,放到父类里面就算了,还要用用成员方法来使用,太难看了!</p>
<div class="quote_div">
<div class="quote_title">qchong 写道</div>
<div class="quote_div">
<div class="quote_title">ywlqi 写道</div>
<div class="quote_div">
<div class="quote_title">Das_flamen 写道</div>
<div class="quote_div">
<div class="quote_title">superyang 写道</div>
<div class="quote_div">
<div class="quote_title">抛出异常的爱 写道</div>
<div class="quote_div">
<pre name="code" class="java">
StringBuffer buffer = new StringBuffer("select * from T where 1=1 ");
for(Map.Enty e : map){
buffer .appand ("and "+ e.getKey()+" = '"+e.getValue()+"'");
}
</pre>
</div>
<br><br><br><pre name="code" class="java"> String hql = "select e.id,e.name,e.provice,e.city,e.total,date_format(e.addtime,'%Y-%m-%d'),a.name,date_format(e.sendtime,'%Y-%m-%d') from email e,admin a where e.add_admin_id=a.id";
if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}
if (!this.isNull(provice)) {
hql += " and e.provice like '%" + provice + "%'";
}
if (!this.isNull(city)) {
hql += " and e.city like '%" + city + "%'";
}
if (!this.isNull(name)) {
hql += " and e.name like '%" + name + "%'";
}
if (!this.isNull(add_admin_id)) {
hql += " and e.adminByAddAdminId.id='" + add_admin_id + "'";
}
if (!this.isNull(order_type)) {
String arr[] = order_type.split("_");
hql += " order by e." + arr[0] + " " + arr[1];
hql += ",e.addtime desc";
} else {
hql += " e.addtime desc";
}
</pre>
<br><br>这样写可不可以??<br>为什么很多人用StringBuffer的..???</div>
<br>你可以去试下,StringBuffer的效率不是String能比的,拼接的时候String多了严重影响性能。当然,如果就几条那也没什么,不过强烈推荐不要用String,不是个好习惯。</div>
<br><br>我记得有帖子说过jdk1.5以后对字符串相加做了优化,效率和StringBuffer一样了啊,我没做过实验,谁做过实验的来说两句</div>
<br>在编译的时候,确实会适时的将字符串拼接转成StringBuilder<br>
</div>
<br>别信任何jvm作出的承诺<br>比如线程优先级<br>比如某string池的优化<br>比如string可以自己用buffer解析<br>
</div>
<p><br><br>一群大哥们,现在不是一件2010年了吗,怎么大家还是在StringBuffer呀,好歹用个 StringBuilder呀。<br>“比如string可以自己用buffer解析” 高司令这么承诺的,我还是一直比较相信,而且反编译字节码以后都是这样的。<br>比如</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += " and e.name like '%" + email_type + "%'";
}</pre>
<p> 会优化为:</p>
<pre name="code" class="java">if (!this.isNull(email_type)) {
hql += new StringBuider(" and e.name like '%").append(email_type).append("%'";)
}
//大概这样,记不太清了。</pre>
<p>但是变量不会优化的,所以在用StringBuilder一般是在变量循环的时候用。</p>
<p> </p>
<p>还有我最气愤的是:</p>
<pre name="code" class="java">if (!this.isNull(email_type))</pre>
<p> 这是什么东西呀! 明明是静态工具方法,不放到单独的工具类中,还要放到父类里面,放到父类里面就算了,还要用用成员方法来使用,太难看了!</p>
发表评论
-
数据库设计 - 键和索引
2010-08-11 10:18 20101. 数据采掘要预先计划 ... -
数据库设计 - 设计表和字段
2010-08-10 08:44 23991. 检查各种变化 我在设计数据库的时候会考虑到哪些数据字段将 ... -
数据库设计 - 设计数据库之前
2010-08-09 11:00 39291. 考察现有环境 在设计 ... -
数据库的几个范式
2010-05-24 09:05 11851. 1NF 实体的属性是不可再分的数据项。 2. ... -
数据库设计
2010-05-24 09:04 10321. 需求分析 1.1 需求分 ... -
JDBC事务
2009-11-07 14:24 1016// 获得一个Connection对象 Connection ... -
数据库设计技巧
2009-11-07 14:16 8011. 原始单据与实体之间 ...
相关推荐
根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾 例如: (低效,执行时间156.3秒) SELECT * FROM EMP E WHERE SAL > 50000 AND ...
写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句 (5)....
有一些索引非常低效的,比如经常查询状态为进行中的订单,订单有99%的状态是完成,1%是进行中 ,因此我们在订单状态字段上建了一个索引,性能是提高了,但是感觉索引中保存了99%的完成状态数据是永远不会查询到的...
示例:http://192.168.0.1/temp.aspx?id=a or 1=1-- 如果上面语句可以执行说明可以实现注入,则可以 利用系统过程、系统表注入数据库 示例【给系统添加一个用户,黑客可以实现远程登录控制服务器】:...
1.23 识别’低效执行’的SQL语句 14 1.24 用索引提高效率 14 1.25 索引的操作 15 1.26 多个平等的索引 16 1.27 等式比较和范围比较 17 1.28 不明确的索引等级 17 1.29 强制索引失效 18 1.30 避免在索引列上使用计算 ...
4.2.6 低效的“WHERE 1=1” 4.3 数据分组 4.3.1 数据分组入门 4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 ...
4.2.6 低效的“WHERE 1=1” 4.3 数据分组 4.3.1 数据分组入门 4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 ...
4.2.6 低效的“WHERE 1=1” 4.3 数据分组 4.3.1 数据分组入门 4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 ...
4.2.6 低效的“WHERE 1=1” 4.3 数据分组 4.3.1 数据分组入门 4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 ...
1 序言 2 2 影响SQL PERFORMANCE的关键因素和配置: 2 2.1 关于执行计划 2 2.2 ORACLE优化器 2 2.2.1 ORACLE优化器的优化方式 2 2.2.2 优化器的优化模式(Optermizer Mode) 3 2.2.3 Optimizer mode优化模式级别的设定...
4.2.6 低效的“WHERE 1=1” 4.3 数据分组 4.3.1 数据分组入门 4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 ...
如何在mysql查找效率慢的SQL语句呢?...一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。 2,long_query_time 当S
首先我们一般可以利用以下的语句来识别Oracle“低效执行”的SQL语句:SELECTEXECUTIONS,DISK_READS,BUFFER_GETS, 首先我们一般可以利用以下的语句来识别Oracle“低效执行”的SQL语句: SELECTEXECUTIONS,DISK_...
因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于...
一:使用where少使用having; 二:查两张以上表时,把记录少的放在右边;...十一:not exists代替 not in(not in 字句将执行一个内部的排序和合并,任何情况下,not in是最低效的,子查询中全表扫描了。为了避免使用n
首先我们一般可以利用以下的语句来识别Oracle“低效执行”的SQL语句: SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS...