SQL语句书写规范.docx
《SQL语句书写规范.docx》由会员分享,可在线阅读,更多相关《SQL语句书写规范.docx(4页珍藏版)》请在优知文库上搜索。
1、Ibl中col1类型为varchar(10)Select*fromtblwherecoll=2;注:假如col1字段为int类型Select.*fromtblwherecol1=2;可以用到索引4、尽量避开在where子句中对字段运用函数或表达式操作,这将导致引擎放弃索引而运用全表扫描例:select*fromtblwheresubstring(col1,1,4)=1234:不管col1是何种类型的索引都会失效,应改为select*fromtblwherecolllike1234%;5、由上面的问题引申出在查询时运用like的问题。select*fromtblwherecol1like1234
2、%:这种查询方法要比SeIeCt*fromtblwherecol11ike%1234%和select*fromtblwherecolllike%1234这两种方式性能高出4-5倍,因为其次种和第三种方式将无法运用索引。6、避开运用!=或V、ISNU1.1.或ISNOTNU1.1.IN,NOTIN等这样的操作符,因为这会使系统无法运用索引,而只能干脆搜索表中的数据.7、尽量运用数字型字段,把数值信息的字段设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接会逐个比较字符串中每一个字符,而对于数字型而言只须要比较一次就够了。8、合理运用EXISTS,NOTEXIS
3、TS子句。例:1.Selectsum(tl.cl)fromtlwhere(selectcount(*)fromt2wheret2.c2=tl.cl)O2.Selectsum(tl.cl)fromtlwhereexists(select*fromt2wheret2.c2=tl.cl)两者产生相同的结果,但是后者的效率明显要高于前者。因为后者不会产生大量锁定的表扫描或是索引扫描。9、leftjoinon/rightjoinon;join操作MySQ1.内部采纳了一种叫做nestedloopjoin的算法。Nested1.oopJoin事实上就是通过驱动表的结果集作为循环基础数据,假如运用inner
4、join的话MySQ1.会自动地选择小表去驱动大表,而leftjoin会指定由左边的表去驱动右边的表,假如不能确定那个表的结果集更小,就改用innerjoin有MySQ1.自动去选择驱动表。10、orderby假如针对一个字段进行排序操作,尽量运用索引字段假如针对两个字段排序操作,单独对两个字段建索引,。rdcrby无法运用索引,须要对两个字段建立一个联合索引,并且Orderby字句的字段依次要与联合索引中的字段依次保持一样。11、万不要运用OrderbyrandO这个语句。Orderbyrand()Iimill这条吩咐可以满意一个随机取出一条数据的需求,但rand()函数会耗费大量的CPU资
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语句 书写 规范
