print(effect_row)影响的行数
print (cursor.fetchall()) 查修所有数据(元祖)
print(cursor.fetchmany(3))查寻几条数据 (三条)
print(cursor.fetchone())查寻一条数据
增删改时数据在内存中处理,等待回滚和提交。提交之后才能数据持久化,从内存保存到硬盘里 conn.commit()
避免全表扫描 效率极低
建立索引
尽量不给数据路留空值 用not null填充数据 有null值会放弃索引 出现全表扫描
查询语句 应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索 引而进行全表扫描
少用or 来连接条件,如果一个字段有索引,一 个字段没有索引,将导致引擎放弃使用索引而进行全表扫描(两边都有则无所谓)
,in 和 not in 也要慎用 替代:between exists()
like也要慎用(%column%)
避免在 where 子句中对字段进行函数操作
where字句中 = 左侧不能有函数、算术运算或其他表达式运算
如果只更改 1、 2 个字段, 不要 Update 全部字段
多张大数据量表 要先分页再 JOIN
不带任何条件的 count 会引起全表扫描
尽量使用数字型字段
尽可能的使用 varchar/nvarchar 代替 char/nchar
禁止使用 *
尽量避免使用游标,因为游标的效率较差
尽量避免大事务操作,提高系统并发能力。
尽量避免向客户端返回大数据量
B树事实上是一种平衡的多叉查找树,也就是说最多可以开m个叉(m>=2)
每个节点至多可以拥有m棵子树
2、根节点,只有至少有2个节点(要么极端情况,就是一棵树就一个根节点,单细胞生物,即是根,也是叶,也是树)。
3、非根非叶的节点 至少有的Ceil(m/2)个子树(Ceil表示向上取整,图中5阶B树,每个节点至少有3个子树,也就是至少有3个叉)
4、非叶节点中的信息包括[n, A0,K1, A1,K2,A2,…,Kn,An],,其中n表示该节点中保存的关键字个数,K为关键字且Ki<Ki+1,A为指向子树根节点的指针
从根到叶子的每一条路径都有相同的长度,也就是说,叶子节在相同的层,并且这些叶子节点不带信息
B树的查询过程和二叉排序树比较类似,从根节点依次比较每个结点,因为每个节点中的关键字和左右子树都是有序的,所以只要比较节点中的关键字,或者沿着指针就能很快地找到指定的关键字