$和#为什么$会发生sql注入?

本文探讨了MyBatis中动态SQL的使用技巧,包括#与$符号的区别及应用场景,特别是在排序和模糊查询中的作用。同时,深入解析了数据库索引的工作原理,如何通过合理设置索引来提升查询效率,以及索引过多可能带来的负面影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. “#” 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号

  2. “$” 将传入的数据直接显示生成在sql中

MyBatis排序时使用order by动态参数时需要注意,用 ${} 而不是 #

#{ } 用于CRUD

${ } 则用于模糊查询(记得加%%)

DB执行一条SQL语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索集合。如果对某一字段添加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,索引能增加查询的速度。

---------有索引的话,首先去索引列表中查询,而索引列表是B类树的数据结构,定位到特定值的行就会非常快,所以其查询的速度就很快

是否将所有的字段都添加索引,来加快查询?

------不行的

1.索引会占用存储空间,索引越多,使用的存储空间越多

2.插入数据,存储索引也会消耗时间,索引越多,插入数据的速度越慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值