• 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

  • 相关阅读:
    CMD命令点滴
    Android之Service的使用
    JavaScript第一章
    Android之BroadcastReceiver的使用
    Android之短信验证
    HTML学习(一)
    新一代联合国秘书长?
    粗茶淡饭
    Access里的Case效果 解决“IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败!”问题!
    利用接口实现多种数据库类型的灵活更换
  • 原文地址:https://www.cnblogs.com/skye-you/p/10019040.html
Copyright © 2020-2023  润新知