• sql优化


    其他:http://www.cnblogs.com/ShaYeBlog/archive/2013/07/31/3227176.html

    执行数据库查询时,如果要查询的数据有很多,假如上千万条,用什么办法可以提高查询效率?

    1,在数据库设计方面

    (1)建立索引

    (2)建立分区(mysql,比如按时间分区)

    (3)尽量使用固定长度的字段

    (4)限制字段长度

    2,在数据库I/O方面

    (1)增加缓冲区

    (2)如果涉及表的级联,不同的表存储在不同的磁盘上,以增加I/O速度

    3,在SQL语句方面

    (1)优化sql语句,减少比较次数

    (2)限制返回的条目数

    (3)适当使用存储过程处理,存储过程在创建时就已经在数据库服务器上进行了编译并保存,比单个sql要快,同时只需

    提供存储过程名和必须的参数即可,减少网络延迟。

    4,在Java方面

    (1)如果反复使用查询,使用preparestatement减少查询次数

    PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还经常会在Java面试被提及,譬如:Statement与PreparedStatement的区别以及如何避免SQL注入式攻击?这篇教程中我们会讨论为什么要用PreparedStatement?使用PreparedStatement有什么样的优势?PreparedStatement又是如何避免SQL注入攻击的?

    PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。

    使用PreparedStatement的参数化的查询可以阻止大部分的SQL注入。在使用参数化查询的情况下,数据库系统(eg:MySQL)不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有破坏性的指令,也不会被数据库所运行。
    避免SQL注入的第二种方式:
    在组合SQL字符串的时候,先对所传入的参数做字符取代(将单引号字符取代为连续2个单引号字符,因为连续2个单引号字符在SQL数据库中会视为字符中的一个单引号字符

    http://www.importnew.com/5006.html

  • 相关阅读:
    JAVA数据库建表工具类
    HTML加CSS3太极图demo
    MD5加密(JAVA&JS)
    Base64工具类(JAVA&JS)
    JS模拟圆周运动
    JAVA读取写入excle表兼容版
    Math.PI和Math.sin() 与 Math.cos()搭配使用详解
    MySQL8.0数据库连接问题
    echarts饼状图案例
    JS前端使用MD5加密
  • 原文地址:https://www.cnblogs.com/smuxiaolei/p/7722962.html
Copyright © 2020-2023  润新知