inserted complexity for selection

git-svn-id: http://galileo.dmi.unict.it/svn/relational/trunk@113 014f5005-505e-4b48-8d0a-63407b615a7c
This commit is contained in:
LtWorf 2009-03-18 09:58:25 +00:00
parent df1d5c324a
commit 0d191ab959
2 changed files with 26 additions and 1 deletions

View File

@ -67,3 +67,4 @@
0.10
- In optimizer, added a function that tokenizes an expression
- Document about complexity of operations

View File

@ -1,4 +1,3 @@
Request for Comments: 2026 Harvard University
Complexity
@ -19,6 +18,31 @@ Notation
1. UNARY OPERATORS
Relational defines three unary operations, and they will be studied
in this section. It doesn't mean that they should have similar
complexity.
1.1 Selection
Selection works on a relation and on a python expression. For each
tuple of the relation, it will create a dictionary with name:value
where name are names of the fields in the relation and value is the
value for the specific row.
We can consider the inner cycle as constant as its value doesn't
depend on the relation itself but only on the kind of the relation
(how many field it has).
Then comes the evaluation. A python expression in truth could do
much more things than just checking if a>b. Anyway, ssuming that
nobody would ever write cycles into a selection condition, we have
another constant complexity for this operation.
Then, the tuple is inserted in a new relation if it satisfies the
condition. Since no check on duplicated tuples is performed, this
operation is constant too.
In the end we have O(|n|) as complexity for a selection on the
relation n.
1.2 Rename
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1.3 Projection