1.select loan_number from account where branch_name = "x" and balance < 1000
2.select loan_number from account where branch_name < "x" and balance = 1000
3.select loan_number from account where balance < 1000 and branch_name = "x"建立多码索引(branch_name, balance)书上说2的查找:对于字母字母顺序小于X的每个branch_name值,系统定位balance值为1000的那些记录。然而,由于文件中记录的顺序,每条记录可能位于不同的磁盘块,因此导致大量的I/O操作。和1的区别在于第一个属性是比较条件而不是等值条件,这个条件不能对应于搜索码的一个范围查询。
可是按这样说,到底导致这个区别的是因为第一个属性是字符串(不是数值)的原因,还是因为这是多码索引的第一个查找属性的原因(即where后面的第一个搜索条件)呢。如果后者原因的话,是不是按照3的方法也会导致大量的I/O操作?
2.select loan_number from account where branch_name < "x" and balance = 1000
3.select loan_number from account where balance < 1000 and branch_name = "x"建立多码索引(branch_name, balance)书上说2的查找:对于字母字母顺序小于X的每个branch_name值,系统定位balance值为1000的那些记录。然而,由于文件中记录的顺序,每条记录可能位于不同的磁盘块,因此导致大量的I/O操作。和1的区别在于第一个属性是比较条件而不是等值条件,这个条件不能对应于搜索码的一个范围查询。
可是按这样说,到底导致这个区别的是因为第一个属性是字符串(不是数值)的原因,还是因为这是多码索引的第一个查找属性的原因(即where后面的第一个搜索条件)呢。如果后者原因的话,是不是按照3的方法也会导致大量的I/O操作?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货