数据库优化(数据索引)
首先我们要了解SQLserver 的
执行计划
可以缓存,存储过程/参数化查询
比如:当你在SQL中数据
select * from User where id=1
select * from User where id=2
这两句T-SQL执行计划中是两个不一样的数据
select * from User where
使用 SqlParameter 是使用相同的执行计划在下次查询的时候会更加快速
数据库是什么?
数据库:
应用程序,有序的数据管理----数据在硬盘(持久化;唯一的,多线程操作需要加锁;速度慢,可以SSD加快速度)
1000W的数据大小约等于---2G 打开都是很慢或者打不开,,如何加快查询数据-----索引
数据库是如何存储的
数据如何存储
数据会在硬盘上创建连续的Page 每个Page大小8kb(相对于每个字段的大小为8kb)
*8kb/page 任何一条数据不能跨页存储:数据长度不能超过8096,char varchar max就是8096
text存储超过8kb,会存在另外一个page,数据页只存储位置(效率肯定很低)(分配连续的多个数据页page保存地址)
int/DateTime:可以放入一个page(设计数据库时候,字段类型空间范围尽量小一点)
Extent 扩展区 N个扩展区就是堆
管理数据页,记录好数据页在硬盘的具体位置
IAM Page 管理数据页 数据页里面的路径和具体位置,如果丢失所有的数据将没有任何意义也找不到在哪里
文本图像页 像text等等文本超过8kb的数据 他的查找首先通过Page页找到索引在通过索引在找到文本图像页 数据非常慢
索引页:数据&位置
索引是一个独立的,重复的存储;体积小,扫描快
他们的数据都是重复的,IndexPage的数据都是来自page页面