① 如果需要对磁盘上的1000W条记录构建索引,你认为下面哪种数据结构来存储索引最合
选C
AVL-Tree 检索速度是很快的,这是因为二分检索是树结构的一个本质特性。但是最大的缺点是他的存储利用率太低。每个树节点仅仅有一个数据项,有2个指针和每个数据项的控制信息。
Hash Table当溢出发生时可以分裂成2个节点。目录以2的指数倍增长,只要一个节点溢出而且目录已经达到了指定的最大目录深度,他就会加倍。一个问题就是任何一个节点都能引起目录分裂,因此如果Hash函数不是很随机的话,目录可能增长的很大。
List优点是存取方便,但不便于动态维护,进行插入删除等操作时需要移动大量的数据。
B-tree是比较合适用于磁盘的数据结构,由于他是一个宽而浅的树,查找一个数需要访问很少的节点。内存利用率是比较好的,所以他用于内存数据库比较合适;搜索速度比较快(用二分查找时,只访问很少一部分节点);而且更新速度也比较快(数据移动通常只涉及到一个节点)
② 在sql数据库中有1000w条数据,要对某条数据进行操作,怎样能快速的找到这条数据,要求优化sQL语句
根据主键操作这条数据,或者对你要操作的数据查找的那一列建立索引。如果非要用like查询的话尽量用select * from table where colume like '条件%'
如果 这样select * from table where colume like '%条件%' 是不会走索引的
涉及到联表查询的话用exists代替in操作
③ sql server需要存储1000万条数据该怎么办
以现在的技术,有下面的提示给你:
一、配置为:双CPU(四核)/RAID5阵列硬盘
的当前的典型数据服务器,可以存储每条数据长度不是过大的1000万条以上数据。
二、存储是一回事,处理好数据是另一回事,如果对这千万条数据,在做好关键字段的索引后,只是存储和查询的话,速度不会太慢,一般最多几秒内能给出查找结果。
三、但是,如果你要对这千万条数据进行分组汇总之类的操作的话,那就很麻烦了,可能慢到你无法接受,甚至会给出超时等报错的提示。解决的办法是,优化查询语句,进行存储过程的合理编写。
四、千万条数据一般会使得数据库文件的体积达到几十G甚至更多。