摘要:
PreparedStatement的执行步骤:1. 向数据库服务器发送SQL语句,数据库对SQL进行解析和优化(conn.preparedStatement(sql))2. 向数据库发送绑定的参数和值,并执行SQL(pstmt.setString(), pstmt.executeQuery())他的优势在于:1. 数据库仅需解析一次SQL(后面可以循环使用这个pstmt进行数据库操作)2. 数据库优化器仅需进行一次SQL优化,因为数据库可以缓存执行计划3. 无需处理SQL转义,更安全4. 以二进制的方式发送参数和句柄,节省内存,减少网络开销(不知道在JDBC中是不是这样)另外,可以使用pstm 阅读全文
摘要:
外键成本1.对子表进行插入操作时,需要约束父表中的外键行,也就是对父表的外建行加锁,以确保这个外键不会再子表插入事务结束前被更改,从而导致额外的锁等待2.Innodb强制外键使用索引,而如果外键的选择性很低(例如status列,或许一共只有3个值),那么索引对与查找来说几乎没有帮助,而且会占用很大的空间如果仅仅是使用外键作为约束,则使用触发器或者限制值(Enum)或者在程序里显式约束会更好 阅读全文