最近系统访问量有些大,公司的DBA总是找我进行sql优化。
由于要使用商品编号获取商品信息,传入的商品编号个数不一定,sqlserver建立的执行计划也会不一样,这样影响了执行效率。后发现可以使用parameterMap固定传入长度的字符串,这样sqlserver建立的执行计划就是一个了,提高执行效率。代码如下
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="Account"
xmlns="http://ibatis.apache.org/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<alias>
<typeAlias alias="ContentObject" type="DaoProvider.ContentObject,DaoProvider"/>
</alias>
<statements>
<select id="GetWareSortByWids" parameterMap="Widsjoin" resultClass="Product">
</select>
</statements>
<parameterMaps>
<parameterMap id="Widsjoin" class="string">
<parameter property="value" dbtype="varchar" type="string" direction="Input" size="8000"/>
</parameterMap>
</parameterMaps>
</sqlMap>
经过测试改为此种之后减少数据库预编译的次数,有效的提高了sql的执行效率,执行效率至少提高30%。
本人亲自测试。
相关推荐
iBatis(现在通常被称为MyBatis)提供了一套强大的动态SQL功能,可以帮助开发者灵活地构建SQL语句,极大地提高了开发效率和代码的可维护性。 #### 一、基本概念 iBatis框架中的动态SQL主要通过XML映射文件来实现,...
4. 高效性能:由于SQL语句直接由数据库执行,减少了中间层的处理,提高了执行效率。 总结来说,Ibatis通过提供灵活的SQL映射机制,实现了数据库操作的便捷和高效。它的核心在于SQL映射文件、映射器接口、SqlSession...
Ibatis可以让你直接编写原生态SQL,可以严格控制SQL执行性能,灵活度极高,尤其适合对SQL有特殊需求的项目。 ### SQL语句详解 #### 1. 删除操作:基于时间戳删除成员访问日志 ```xml delete from ...
2.3 参数绑定:调用 SqlSession 的方法时,传入参数对象或 Map,Ibatis 会自动将参数映射到 SQL 语句中。 2.4 结果处理:查询操作返回的结果会被自动映射到 Java 对象,更新操作返回受影响的行数。 **3. 动态 SQL*...
例如,`DynamicSqlMapClient`类支持动态SQL Map的执行,它可以根据传入的参数动态修改SQL语句,避免了大量的条件分支代码。 此外,iBATIS还提供了一些辅助工具,如`ParameterMap`用于管理SQL语句的输入参数,`...
3. 执行SQL:调用SqlSession的selectList、selectOne、insert、update或delete方法,传入Mapper接口方法的名称和参数。 4. 处理结果:如果是查询操作,返回的结果会被自动映射为Java对象;如果是增删改操作,返回受...
3. 动态SQL:iBATIS支持动态构建SQL语句,可以根据传入的参数灵活地调整查询条件。这在处理条件复杂的查询时非常有用,避免了编写大量硬编码的SQL语句。 4. 事务管理:iBATIS提供了事务管理功能,可以在应用级别...
这使得传入参数和SQL语句中的占位符之间可以灵活对应,降低了编写SQL的复杂度。 5. **结果集映射**:通过配置文件,你可以定义如何将数据库查询结果映射到.NET对象,支持一对一、一对多、多对一等多种映射关系,...
3. **动态SQL**:iBATIS支持动态SQL,可以通过条件标签(如`if`, `where`, `choose`, `when`, `otherwise`等)来构建灵活的SQL语句,根据实际传入参数决定SQL的结构。 4. **接口绑定**:在Java代码中,我们可以创建...
在 `select` 标签中,你可以使用 `<if>`、`<choose>`、`<when>`、`<otherwise>` 和 `<where>` 等标签来构建动态 SQL,根据传入参数的不同组合生成不同的 SQL 语句。 5. **单对象查询** 当需要查询单个对象时,可以...
4. 调用方法:在业务逻辑中,通过`UserMapper`接口调用`selectUserById`方法,传入用户ID,iBATIS会执行对应的SQL语句并返回结果。 六、最佳实践 1. 保持SQL Map整洁:每个SQL语句应有明确的ID,避免重复和混淆。 2...
iBATIS提供了一个灵活的映射框架,可以将SQL查询结果映射到Java对象上,同时也支持动态SQL,极大地提高了开发效率。 **iBATIS-SqlMaps-2_cn.pdf** 这份文档详细介绍了iBATIS的核心概念,如SqlMapConfig.xml配置...
ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...
通过使用动态SQL,可以在运行时根据传入的参数来构造和执行SQL,提高了灵活性。 4. **参数映射和结果映射**:iBATIS允许你定义参数和结果集的映射,将Java对象与数据库记录关联起来。你可以使用简单的类型(如字符...
1. **动态SQL**:iBATIS允许在SQL映射文件中编写条件语句,使得SQL可以根据传入的参数动态生成,大大增强了SQL的灵活性。 2. **映射文件**:XML配置文件定义了SQL语句和Java对象之间的映射关系,包括插入、更新、...
iBatis会自动处理主键生成和参数绑定,提高开发效率。 2. **删除记录**:删除操作分为删除指定记录和删除全部记录。使用`<delete>`标签定义删除语句,可以按ID或其他条件进行删除。在Java代码中,调用Mapper接口的...
在Java开发中,iBatis是一个非常流行的持久层框架,它将SQL语句与Java代码分离,提高了代码的可维护性和可读性。SQLMap文件是iBatis的核心部分,它定义了数据库操作的SQL语句及其参数映射。本篇文章将详细探讨如何...
开发者可以在这些文件中编写动态 SQL,使得 SQL 语句可以根据传入的参数灵活变化。 2. **Data Mapper API**: 这是 iBATIS 提供的主要接口,允许开发者通过编程方式执行 SQL 映射文件中的查询。主要的接口包括 `...