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

  • 相关阅读:
    Git修改用户名和提交的邮箱
    在vue项目中引入bootstrap
    自定义radio,使用图片进行切换(点击切换时,获取变量值)
    nodejs知识清单
    swoft源码研究
    Nginx变量查询
    mongodb索引
    mongodb数据备份:导入导出
    mongodb主从复制和分片
    mongodb服务安装
  • 原文地址:https://www.cnblogs.com/skye-you/p/10019040.html
Copyright © 2011-2022 走看看