Presentation is loading. Please wait.

Presentation is loading. Please wait.

INDEXING (CHAPTER 11) 9/16/2018.

Similar presentations


Presentation on theme: "INDEXING (CHAPTER 11) 9/16/2018."— Presentation transcript:

1 INDEXING (CHAPTER 11) 9/16/2018

2 TOPICS Basic concepts Hashing B+-tree 9/16/2018

3 INTRODUCTION Review E-R data model Conceptual Logical
Relational data model SQL Physical relation = a file Org. of records on a disk page Organization of attributes within a record Index Files 9/16/2018

4 Software Architecture of a DBMS
Query Parser Query Optimizer Query Interpretor Relational Algebra operators: , , , , , , , ,  Index structures Abstraction of records Buffer Pool Manager File System 9/16/2018

5 Implementation of б бSalary=30,000(Employee) Emp table:
SS# Name Age Salary dno 1 Joe 24 20000 2 Mary 20 25000 3 Bob 22 27000 4 Kathy 30 30000 5 Shideh 4000 Emp table: бSalary=30,000(Employee) Process the select operator using a file scan (linear scan) F1 = Open the file corresponding to Employee P = read first page of F1 While P is not null For each record in P, if the record satisfies the selection predicate then produce as output P = read next page of F1 /* P becomes null when EoF is reached */ SS# Name Age Salary dno 4 Kathy 30 30000 5 9/16/2018

6 Implementation of б бSalary=30,000(Employee) Emp table:
SS# Name Age Salary dno 1 Joe 24 20000 2 Mary 20 25000 3 Bob 22 27000 4 Kathy 30 30000 5 Shideh 4000 Emp table: бSalary=30,000(Employee) Process the select operator using a file scan (linear scan) F1 = Open the file corresponding to Employee P = read first page of F1 While P is not null For each record in P, if the record satisfies the selection predicate then produce as output P = read next page of F1 SS# Name Age Salary dno 4 Kathy 30 30000 5 Fetch the page from disk if not in the buffer pool 9/16/2018

7 Implementation of б бSalary=30,000(Employee) Emp table:
SS# Name Age Salary dno 1 Joe 24 20000 2 Mary 20 25000 3 Bob 22 27000 4 Kathy 30 30000 5 Shideh 4000 Emp table: бSalary=30,000(Employee) Process the select operator using a file scan (linear scan) F1 = Open the file corresponding to Employee P = read first page of F1 While P is not null For each record in P, if the record satisfies the selection predicate then produce as output P = read next page of F1 SS# Name Age Salary dno 4 Kathy 30 30000 5 Header 9/16/2018

8 TERMINOLOGY An exact match selection predicate: бSalary=30,000(Employee) , бFirstName=“Shideh”(Employee) A range selection predicate: бSalary>30,000(Employee) , бSalary<30,000(Employee), бSalary>30,000 and Salary < 32,000 (Employee) 9/16/2018

9 Analogy: Catalog cards in the library (more than one index).
INTRODUCTION (Cont…) Motivation: Speed-up those queries that reference only a small portion of the records in a file. Analogy: Catalog cards in the library (more than one index). Evaluation: 1. Access time (find) 2. Insertion time (find + add) 3. Deletion time (find + delete) 4. Space overhead Search-key: The attribute (or set of attributes) used to lookup records in a file Primary index: The index whose search key specifies the sequential order of the records within a file. Secondary index: The index whose search key does not specify the sequential order of the records within a file. 9/16/2018

10 Indexing Mapping of records to a finite space using a function (computation) E.g., 9/16/2018

11 K F(K) 10 10-1=9 11 11-2=9 12 12-3=9 13 13-4=9 14 14-5=9 15 15-6=9 16 16-7=9 17 17-8=9 18 18-9=9 19 19-10=9 20 20-2=18 21 21-3=18 22 22-4=18 29 29-11=18 30 30-3=27 31 31-4=27 39 39-12=27 K F(K) 40 40-4=36 .. 49 49-13=36 50 50-5=45 59 59-14=45 69 69-15=54 79 79-16=64 89 89-17=72 99 99-18=81 9/16/2018

12 KEY OBSERVATIONS A deterministic function (analytical) to map a large set of key values, potentially infinite in size, to a set that is small and finite. The deterministic function might be a randomizing function making it appropriate for processing exact-match selection predicate. To process range selection predicates, the deterministic function should be order-preserving. 9/16/2018

13 Assume, size of disk page = 2 data records = 5 index records.
INTRODUCTION (Cont…) Example: Assume, size of disk page = 2 data records = 5 index records. Indexing or not indexing? SELECT age SELECT age FROM personnel FROM personnel WHERE name = “Alice” WHERE name = “Don” Alaska Arizona California Florida Indiana Ohio Alaska Bob Alaska George Arizona David California Hellen California Jack Florida Frank Florida Charles 4 Indiana Joe Ohio Alice Ohio David Alice Bob Charles David Frank George Hellen Jack Joe State Name Age Other! 9/16/2018

14 Assume, size of disk page = 2 data records = 5 index records.
INTRODUCTION (Cont…) Example: Assume, size of disk page = 2 data records = 5 index records. Primary vs. Secondary” SELECT name SELECT age FROM personnel FROM personnel WHERE state = “Ohio” WHERE name = “David” Alaska Boston California Florida Indiana Ohio Alaska Bob Alaska George Boston David California Hellen California Jack Florida Frank Florida Charles 4 Indiana Joe Ohio Alice Ohio David Alice Bob Charles David Frank George Hellen Jack Joe State Name Age Else! 9/16/2018

15 Example: (page = 2 data = 5 index)
INTRODUCTION (Cont…) Example: (page = 2 data = 5 index) Exact match vs. Range SELECT name SELECT name FROM personnel FROM personnel WHERE state = “California” WHERE state >= “Alaska” and state <= “Florida” Speedup by employing binary search (is it possible?) Alaska Mass California Florida Indiana Ohio Alaska Bob Alaska George Mass David California Hellen California Jack Florida Frank Florida Charles 4 Indiana Joe Ohio Alice Ohio David Alice Bob Charles David Frank George Hellen Jack Joe State Name Age Else! 9/16/2018

16 Dense Index Files Dense index — Index record appears for every search-key value in the file. 9/16/2018

17 Example of Sparse Index Files
9/16/2018

18 Multilevel Index 9/16/2018

19 HASHING Hash function: K: the set of all search key values
V: the set of all bucket address h(K): K V K is large (perhaps infinite) but set of search-key values actually stored in the database is much smaller than K. Fast lookup: To find Ki, search the bucket with h(Ki) address. 9/16/2018

20 HASHING (Cont…) Example:
K = salary (set of all 6 digit integers) V = 1000 buckets addressed from 0 to 999 h(k) = k mod 1000. SELECT name FROM personnel WHERE salary = “120,100” To find a 120,100 salary, we should search bucket number 100. Hash is only appropriate for Exact match queries. A bad hash function maps the value to a subset of (or a few) buckets (e.g., h(k) = k mod 10. 9/16/2018

21 HASHING (Cont…) Clustered Hash Index Non-clustered Hash Index:
The index structure and its buckets are represented as a file (say file.hash) The relation is stored in file.hash (I.e., each entry in file.hash corresponds to a record in relation) Assuming no duplicates: the record can be accessed in 1 IO. Non-clustered Hash Index: The relation remains intact Each entry in file.hash has the following format: (search-key value, RID) Assuming no duplicates: the record can be accessed in 2 IO. 9/16/2018

22 HEAP FILE ORGANIZATION
Assume a student table: Student(name, age, gpa, major) t(Student) = 16 P(Student) = 4 Bob, 21, 3.7, CS Kane, 19, 3.8, ME Louis, 32, 4, LS Chris, 22, 3.9, CS Mary, 24, 3, ECE Lam, 22, 2.8, ME Martha, 29, 3.8, CS Chad, 28, 2.3, LS Tom, 20, 3.2, EE Chang, 18, 2.5, CS James, 24, 3.1, ME Leila, 20, 3.5, LS Kathy, 18, 3.8, LS Vera, 17, 3.9, EE Pat, 19, 2.8, EE Shideh, 16, 4, CS 9/16/2018

23 Non-Clustered Hash Index
A non-clustered hash index on the age attribute with 4 buckets, h(age) = age % B (24, (1, 2)) (20, (4,3)) (32, (3,1)) (16, (4,4)) (21, (1, 1)) (20, (1,3)) (24, (3,3)) (17, (2,4)) (28, (4,2)) (29, (3,2)) 1 2 (18, (1, 4)) 3 (22, (2,2)) (19, (2, 1)) (22, (4,1)) (19, (3, 4)) (18, (2,3)) Bob, 21, 3.7, CS Kane, 19, 3.8, ME Louis, 32, 4, LS Chris, 22, 3.9, CS Mary, 24, 3, ECE Lam, 22, 2.8, ME Martha, 29, 3.8, CS Chad, 28, 2.3, LS Tom, 20, 3.2, EE Chang, 18, 2.5, CS James, 24, 3.1, ME Leila, 20, 3.5, LS Kathy, 18, 3.8, LS Vera, 17, 3.9, EE Pat, 19, 2.8, EE Shideh, 16, 4, CS 9/16/2018

24 Clustered Hash Index A clustered hash index on the age attribute with 4 buckets, h(age) = age % B Mary, 24, 3, ECE Shideh, 16, 4, CS Louis, 32, 4, LS Leila, 20, 3.5, LS Bob, 21, 3.7, CS Tom, 20, 3.2, EE James, 24, 3.1, ME Vera, 17, 3.9, EE Chad, 28, 2.3, LS Martha, 29, 3.8, CS 1 2 Kathy, 18, 3.8, LS 3 Lam, 22, 2.8, ME Kane, 19, 3.8, ME Chris, 22, 3.9, CS Pat, 19, 2.8, EE Chang, 18, 2.5, CS 9/16/2018

25 Non-Clustered Hash Index
A non-clustered hash index on the age attribute with 4 buckets, h(age) = age % B Pointers are page-ids 500 (24, (1, 2)) (20, (4,3)) 1001 (32, (3,1)) (16, (4,4)) (21, (1, 1)) (20, (1,3)) (24, (3,3)) (17, (2,4)) (28, (4,2)) (29, (3,2)) 500 706 1 1001 2 706 (18, (1, 4)) 101 3 101 (22, (2,2)) (19, (2, 1)) (22, (4,1)) (19, (3, 4)) (18, (2,3)) Bob, 21, 3.7, CS Kane, 19, 3.8, ME Louis, 32, 4, LS Chris, 22, 3.9, CS Mary, 24, 3, ECE Lam, 22, 2.8, ME Martha, 29, 3.8, CS Chad, 28, 2.3, LS Tom, 20, 3.2, EE Chang, 18, 2.5, CS James, 24, 3.1, ME Leila, 20, 3.5, LS Kathy, 18, 3.8, LS Vera, 17, 3.9, EE Pat, 19, 2.8, EE Shideh, 16, 4, CS 9/16/2018

26 Clustered Hash Index (SEQUENTIAL LAYOUT)
A clustered hash index on the age attribute with 4 buckets, h(age) = age % 4 When the number of buckets are known in advance, the system may assume a sequentially laid file to eliminate the need for the hash directory. Shideh, 16, 4, CS Leila, 20, 3.5, LS James, 24, 3.1, ME Mary, 24, 3, ECE Bob, 21, 3.7, CS Kathy, 18, 3.8, LS Kane, 19, 3.8, ME Louis, 32, 4, LS Vera, 17, 3.9, EE Lam, 22, 2.8, ME Pat, 19, 2.8, EE Tom, 20, 3.2, EE Martha, 29, 3.8, CS Chris, 22, 3.9, CS Chad, 28, 2.3, LS Chang, 18, 2.5, CS 9/16/2018

27 Clustered Hash Index (SEQUENTIAL LAYOUT)
A clustered hash index on the age attribute with 4 buckets, h(age) = age % 4 When the number of buckets are known in advance, the system may assume a sequentially laid file to eliminate the need for the hash directory. Offset (bucket-id –1) times page size is for bucket-id Shideh, 16, 4, CS Leila, 20, 3.5, LS James, 24, 3.1, ME Offset 0 is for bucket 0 Offset Page Size is for bucket 1 Mary, 24, 3, ECE Bob, 21, 3.7, CS Kathy, 18, 3.8, LS Kane, 19, 3.8, ME Louis, 32, 4, LS Vera, 17, 3.9, EE Lam, 22, 2.8, ME Pat, 19, 2.8, EE Tom, 20, 3.2, EE Martha, 29, 3.8, CS Chris, 22, 3.9, CS Chad, 28, 2.3, LS Chang, 18, 2.5, CS 9/16/2018

28 Block address on disk Bucket Number 1 2 M-2 M-1 9/16/2018

29 Example of Non-Clustered Hash Index
9/16/2018

30 Overflow buckets Main buckets 340 981 460 1 181 2 321 551 761 91 22 72
340 981 Record pointer 460 1 Record pointer 181 Record pointer 2 Record pointer 321 551 Record pointer 761 91 Record pointer Record pointer Record pointer 22 72 9 522 Record pointer 9/16/2018

31 HASHING (Cont…) Loading factor Why a bucket might overflow?
B = # of buckets, S = # of records per bucket, R = # of records in the relation loading - factor = R / (B×S) The loading factor should not exceed 80%, if that happens, double B and re-hash. Why a bucket might overflow? Heavy loading of the file Poor hash functions Statistical peculiarities If a bucket overflows? Chaining: chain an empty bucket to the bucket that overflows. Open addressing: If bucket h(k) is full, store the record in h(k) + 1, if that is also full, try h(k) + 2, and so on. Two hash functions: If bucket h(k) is full, store the record in h’(k). 9/16/2018

32 HASHING (Cont…) Problem: The file grows and shrinks over time. Hence, how one should choose the hash function: 1. Based on current file size performance degradation as DB grows 2. Based on anticipated file size waste space initially (and reduced buffer hits) 3. Periodical reorganization time consuming 3.1. Choose new hash function 3.2. Recompute hash value on every record 3.3. Generate new bucket assignments Solution: Dynamic hash functions: dynamic modification of h to accommodate growth and shrinkage of the DB. (e.g., extendible hashing) 9/16/2018

33 HASHING (Cont…) Extendible hashing Choose a hash function (h) such that it results in a b (b = 32) bit binary number. The directory has a header that contains its depth, d. Each directory entry points to a hash bucket. Buckets are created on demand, as records are inserted. Each bucket contains a local depth used to find data. Directory depth 1 bucket 2 directory 00 01 10 siblings 11 9/16/2018

34 HASHING (Cont…) Extendible hashing (continued):
Every time a bucket overflows, its local depth is increased. If the local depth is greater than the depth of the directory, the directory’s depth is increased, causing the directory to double in size. Each directory entry has one sibling or buddy. Two entries are buddies if they have identical bit patterns except for the dth bit. Every time a bucket overflows, its local depth is increased. If the local depth is greater than the depth of the directory, then the directory’s depth is increased, causing the directory to double in size. A bucket can overflow at any desired loading factor. That is, a split might happen every time a bucket is 80% full. 9/16/2018

35 HASHING (Cont…) Retrieval with Extendible hashing: Retrieve (K0)
Calculate h’ = h(K0) Read depth d of the directory Interpret the d initial bits of h’ as an integer base 2, term this r. Retrieve the bucket pointed to by the rth entry Find the record in this bucket 5.1. If a hashing technique is used to organize the records in a bucket, use the d bits defined on that bucket 5.2. If necessary, follow the collision resolution scheme within this bucket. 9/16/2018

36 HASHING (Cont…) Insertion with Extendible hashing: Insert (K0)
Apply the first four steps of Retrieve (K0) to find bucket b. If the insertion of K0 into b result in no overflow then Insert K0 into b and return Otherwise, obtain a new bucket b’ Set the local depth of b’ and b to equal (local depth of b + 1) If the new depth is NOT greater than the depth of the directory 5.1. Distinguish between b and b’ using their new d and set the appropriate entry(ies) of the directory to point to each 5.2. Rehash the entries in bucket b and assign each individual entry to the appropriate bucket b or b’ 5.3. Insert (K0) If the new depth is greater than the depth of the directory 6.1 Increase the depth of the directory, doubling its size 6.2. Set each entry and its buddy to point to the old bucket that it was pointing to 6.3. Rehash the entries in bucket b and assign each individual entry to the appropriate bucket b or b’ 6.4. Insert (K0) 9/16/2018

37 HASHING (Cont…) Deletion with Extendible hashing: Delete (K0)
Apply the first four steps of Retrieve (K0) to find bucket b. If K0 is not b then return with value no found Otherwise, delete the entry corresponding to K0 If the sum of the number of entries on this page and its sibling page are below the size of a bucket then: 4.1. Copy the entries in the two buckets into one bucket b’ 4.2. Depth of b’ = (depth of b - 1) 4.3. Free bucket b 4.4. Locate the two hash directory entries pointing to b and its buddy. Set these two pointers to b’ 4.5. If every pointer in the directory equals its sibling pointer then decrease the depth of the directory by one and set each entry in an obvious manner. 9/16/2018

38 Use of Extendable Hash Structure: Example
Initial Hash structure, bucket size = 2 9/16/2018

39 Example (Cont.) Hash structure after insertion of one Brighton and two Downtown records 1 9/16/2018

40 Hash structure after insertion of Mianus record
Example (Cont.) Hash structure after insertion of Mianus record 00 01 10 11 9/16/2018

41 Hash structure after insertion of three Perryridge records
Example (Cont.) 000 001 010 011 100 101 110 111 Hash structure after insertion of three Perryridge records 9/16/2018

42 Example (Cont.) Hash structure after insertion of Redwood and Round Hill records 000 001 010 011 100 101 110 111 9/16/2018

43 Extendible Hashing A hash-index structure might be represented as a file. The directory might be represented in a disk page. Each budget is represented as a disk page (including the overflow pages). Assuming the disk page size is 128 Kilobytes, an index structure with 100 pages would consist of: 1 page for the index directory: assuming each entry in the directory is an RID (disk page number, slot number), it consists of two integers (4 bytes each) for a total of 8 bytes. Thus, the directory is 800 bytes long and fits in one disk page. 100 pages: one for each bucket. Directory occupies less than 1% of the total file size. Conclusion: The size of the hash-index file is dominated by the number of buckets. 9/16/2018

44 HASHING (Cont…) Extendible hashing:
The insertion algorithm of extendible hashing might crash when 9/16/2018

45 HASHING (Cont…) Hashing vs. Indexing Hashing is appropriate for exact match queries: (cannot support range queries) SELECT A1, A2, … FROM r WHERE (Ai = c) Indexing is appropriate for both range and exact match queries: WHERE (Ai <= c1) and (Ai > c2) 9/16/2018

46 Example Suppose that we are using extendable hashing on a file that contains records with the following search key values: 2, 3, 5, 7, 11, 17, 19, 23, 29, 31 Show the extendible hash structure for a 5 bit machine assuming hash function is h(x) = x mod 8 and buckets can hold three records 9/16/2018

47 B+-TREE B+-tree is a multi-level tree structured directory
Clustered: Leaf nodes contain the records, themselves. …. ... Root Internal Nodes Leaf Nodes Data File 9/16/2018

48 B+-TREE (Cont…) Non-clustered: Leaf nodes contain the pairs (P, K), where P is a pointer to the record in the file and K is a search-key. 9/16/2018

49 B+-TREE (Cont…) Leaf nodes Maintain between to n-1 values per leaf.
If i < j then Ki < Kj Every search-key value in the file appears in some leaf node. Suppose Li and Lj are two leaves and i < j, then every search value in Li is less than every search value in Lj. P1 K1 P2 . . . Pn-1 Kn-1 Pn (n-1) 2 5 7 10 (n = 4) 5 7 10 15 17 18 9/16/2018

50 B+-TREE (Cont…) 5 7 10 Internal nodes
Maintain between to n pointers per internal node root is an exception: It must have more than one pointer. Suppose a node with m pointers and 2<= i < m: Pi points to subtree containing search-key values < Ki and >= Ki-1. Pm points to subtree containing search-key values >= Km-1. P1 points to subtree containing search-key values < K1. n 2 2 3 5 7 10 6 11 9/16/2018

51 B+-TREE (Cont…) Lookup Find 7: 4 Ios
Find 4-20: 5 IOs (assuming primary index), 9 IOs (assuming secondary index) More than 10% selection: it is more efficient to do sequential scan (do not use the secondary index). Example: 10,000 records, select 1000 of them, 1000 records per disk page: (Sequential search: 10 IOs, Secondary index: potentially IOs) 30 8 41 50 4 7 10 20 40 47 52 9/16/2018

52 B+-TREE (Cont…) Analysis References:
“B” in B+-tree stands for Balanced. i.e., the length of every path from the root to a leaf node is the same. Hence, good performance for lookup, insertion, and deletion K: number of search key values in a file, then the path is < log (K). #K = 1,000,000, and 10 <= n <= 100 then at most 3 to 9 nodes be accessed. Insertion and Deletion should not destroy the balance of the tree. References: J. Jannink, Inplementing Deletion in B+-Trees, SIGMOD RECORD, Volume 24, Number 1 (March 1995), pages D. Comer, The Ubiquitous B-tree, ACM Computing Surveys, Volume 11, Number 2 (June 1979), pages n 2 9/16/2018

53 B+-TREE (Cont…) n = 4; Internal nodes: 2 to 4 pointers
Leaf nodes: 2 to 3 values 8 25 10 20 4 7 30 40 Insert 41 8 25 4 7 10 20 30 40 41 Insert 47 30 40 41 47 8 25 41 4 7 10 20 30 40 41 47 9/16/2018

54 B+-TREE (Cont…) Insert 50 Insert 52 9/16/2018 8 25 10 20 4 7 30 40 41
47 50 Insert 50 Insert 52 41 47 50 52 8 25 41 50 41 8 25 50 4 7 10 20 30 40 41 47 50 52 9/16/2018

55 B+-TREE (Cont…) Delete 20 underflow 9/16/2018 30 10 20 4 7 40 41 47 50
52 8 Delete 20 30 underflow 8 41 50 4 7 10 30 40 41 47 50 52 30 41 50 4 7 10 30 40 41 47 50 52 9/16/2018

56 HEAP FILE ORGANIZATION
Assume a student table: Student(name, age, gpa, major) t(Student) = 16 P(Student) = 4 Bob, 21, 3.7, CS Kane, 19, 3.8, ME Louis, 32, 4, LS Chris, 22, 3.9, CS Mary, 24, 3, ECE Lam, 22, 2.8, ME Martha, 29, 3.8, CS Chad, 28, 2.3, LS Tom, 20, 3.2, EE Chang, 18, 2.5, CS James, 24, 3.1, ME Leila, 20, 3.5, LS Kathy, 18, 3.8, LS Vera, 17, 3.9, EE Pat, 19, 2.8, EE Shideh, 16, 4, CS 9/16/2018

57 Non-Clustered Secondary B+-Tree
A non-clustered secondary B+-tree on the gpa attribute 3.6 (2.3, (4, 2)) (3, (1,2)) (3.7, (1, 1)) (3.9, (4,1)) (2.5, (2,3)) (3.1, (3,3)) (3.8, (3,2)) (3.9, (2,4)) (2.8, (2,2)) (3.2, (1,3) (3.8, (2,1)) (4, (3,1)) (2.8, (3,4)) (3.8, (1,4)) (3.5, (4,3)) (4, (4,4)) Bob, 21, 3.7, CS Kane, 19, 3.8, ME Louis, 32, 4, LS Chris, 22, 3.9, CS Mary, 24, 3, ECE Lam, 22, 2.8, ME Martha, 29, 3.8, CS Chad, 28, 2.3, LS Tom, 20, 3.2, EE Chang, 18, 2.5, CS James, 24, 3.1, ME Leila, 20, 3.5, LS Kathy, 18, 3.8, LS Vera, 17, 3.9, EE Pat, 19, 2.8, EE Shideh, 16, 4, CS 9/16/2018

58 Non-Clustered Primary B+-Tree
A non-clustered primary B+-tree on the gpa attribute 3.6 (2.3, (1, 1)) (3, (2,1)) (3.7, (3, 1)) (3.9, (4,1)) (2.5, (1,2)) (3.1, (2,2)) (3.8, (3,2)) (3.9, (4,2)) (2.8, (1,3)) (3.2, (2,3) (3.8, (3,3)) (4, (4,3)) (2.8, (1,4)) (3.8, (3,4)) (3.5, (2,4)) (4, (4,4)) Chad, 28, 2.3, LS Mary, 24, 3, ECE Bob, 21, 3.7, CS Chris, 22, 3.9, CS Kathy, 18, 3.8, LS Vera, 17, 3.9, EE Chang, 18, 2.5, CS James, 24, 3.1, ME Lam, 22, 2.8, ME Kane, 19, 3.8, ME Louis, 32, 4, LS Tom, 20, 3.2, EE Pat, 19, 2.8, EE Leila, 20, 3.5, LS Martha, 29, 3.8, CS 9/16/2018 Shideh, 16, 4, CS

59 Clustered B+-Tree 2.9 3.6 3.8 Chad, 28, 2.3, LS Mary, 24, 3, ECE
A clustered B+-tree on the gpa attribute It is impossible to have a clustered secondary B+-tree on an attribute. 2.9 3.6 3.8 Chad, 28, 2.3, LS Mary, 24, 3, ECE Bob, 21, 3.7, CS Chris, 22, 3.9, CS Kathy, 18, 3.8, LS Vera, 17, 3.9, EE Chang, 18, 2.5, CS James, 24, 3.1, ME Lam, 22, 2.8, ME Kane, 19, 3.8, ME Louis, 32, 4, LS Tom, 20, 3.2, EE Pat, 19, 2.8, EE Leila, 20, 3.5, LS Martha, 29, 3.8, CS Shideh, 16, 4, CS 9/16/2018


Download ppt "INDEXING (CHAPTER 11) 9/16/2018."

Similar presentations


Ads by Google