zoukankan      html  css  js  c++  java
  • oracle DB 使用注意点小结

    1、DDL 后不需要添加commit;语句,因为Oracle数据库的DDL不支持transaction,执行即commit;

      DDL(Data Definition Language): 数据定义语言,包括以下常见语句:
      创建数据库: CREATE {DATABASE | SCHEMA} db_name;
      删除数据库: DROP [TEMPORARY] TABLE tbl_name [RESTRICT | CASCADE];
      创建表: CREATE [TEMPORARY] TABLE tbl_name;
      修改表: ALTER TABLE tbl_name ADD [COLUMN] column_definition; //or delete | modify | drop a column
      删除表:DROP TABLE tbl_name [RESTRICT | CASCADE];
      创建视图: CREATE VIEW view_name AS select_name;
      修改视图: ALTER VIEW view_name AS select_name;
      删除视图: DROP VIEW view_name [RESTRICT | CASCADE];

    2、能精确匹配的时候就不要使用like,尤其是通配符%在前面的;

      eg1. SELECT * FROM student WHERE name LIKE 'xiaoming%' ;
      eg2. SELECT * FROM student WHERE name LIKE '%xiaoming';
      eg3. SELECT * FROM student WHERE name LIKE '%xiaoming%';
      eg4. SELECT * FROM student WHERE name = 'xiaoming';
    从上述四个例子来看,如果创建了索引,eg1 和 eg4 是可以直接走索引的,但是eg4精确匹配的性能要优于eg1模糊查询;eg2 和 eg3 都只能进行全表扫描,性能差。

    3、如果有SQL语句中含有in语句,且in里面的内容多于1000,则需要将in语句拆成几个in的语句用or连接起来。

      eg. SELECT * FROM student where oid in (1, 2, 3, ... , 2500);
      以上语句需要改成 SELECT * FROM student where oid in (1, 2, 3, ... , 1000) or oid in (1001, 1002, 1003, ... , 2000) or oid in (2001, 2002, 2003, ... , 2500);

    4、如果某个字段定义时类型是字符形式,但是内容都是数字,在查找的时候,最好用单引号将数字括起来,因为类型不一致的话会导致数据库进行强制类型转换,从而查询不走索引。

      eg. SELECT * FROM student where no = '15121295';

    参考网址:
    DDL

  • 相关阅读:
    angularJS之基础知识(一)
    angularJS之$http:与服务器交互
    angualrJS之表单验证
    python实现命令行中的进度条原理
    通过Arcpy在ArcMap工具箱中添加脚本计算面图层的起终点坐标
    关于ArcGIS API for JavaScript中basemap的总结介绍(一)
    初学JAVA--分支语句
    移动端开发通用适配
    js中Number.toFixed()方法的理解
    <div>标签仿<textarea>。contentEditable=‘true’,赋予非表单标签内容可以编辑
  • 原文地址:https://www.cnblogs.com/skye-you/p/10019040.html
Copyright © 2011-2022 走看看