静态sql与动态sql有什么区别

默认分类 未结 1 835
___一休___
___一休___ 2023-06-10 09:02
相关标签:
1条回答
  • 2023-06-10 09:03

    1 2 3 DELETE FROM message WHERE id = #{_parameter} 4 5 6 DELETE FROM message WHERE id IN ( 7 8 #{item} 9 10 )11

    include的使用

    1 2 id,command,description,content 3 4 5 6 7

    一对多关系

    package com.imooc.bean;import java.util.List;/** * 与指令表对应的实体类 */public class Command { /** * 主键 */ private String id; /** * 指令名称 */ private String name; /** * 描述 */ private String description; /** * 一条指令对应的自动回复内容列表 */ private List contentList; ......} 1 2 5 6 7 8 9 10 11 12 13 14 27

    动态SQL

    标签:

    SQL语句从编译和运行的角度可以分为两种,静态SQL和动态SQL,这两种SQL在使用方式、运行机制和性能表现等方面各有特点:

    静态SQL:静态SQL语句一般用于嵌入式SQL应用中,在程序运行前,SQL语句必须是确定的,例如SQL语句中涉及的列名和表名必须是存在的。静态SQL语句的编译是在应用程序运行前进行的,编译的结果会存储在数据库内部。而后程序运行时,数据库将直接执行编译好的SQL语句,降低运行时的开销。

    动态SQL:动态SQL语句是在应用程序运行时被编译和执行的,例如,使用DB2的交互式工具CLP访问数据库时,用户输入的SQL语句是不确定的,因此SQL语句只能被动态地编译。动态SQL的应用较多,常见的CLI和JDBC应用程序都使用动态SQL。

    静态sql:语句类型在编程时候必须是确定好的。比如

    select*fromemployeewhereempno='abc'select*fromemployeewhereempno='12'

    都必须是确定的,唯一可以变化的是abc的值。

    动态sql:语句类型可以在运行期间指定,比如clp就是最典型的动态sql程序,你可以输入任何命令。

    静态sql的存取路径是在运行前就确定好的,而动态sql的存取路径是在运行时动态生成的。因此生成的存取计划相对更优,但考虑到生成存取路径的开销,有可能应用程序的运行时间相对会比静态sql长些。

    更多请参见:de.cel.blog.163.com/blog/static/514512362011423113913592/

    0 讨论(0)
提交回复