This entry was posted on Thursday, August 21st, 2008 at 3:46 pm and is filed under Articles. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Query optimisation when using #for:between:and:
Queries in a VOSS odbms are written in Smalltalk and may therefore be of arbitrary complexity, addressing an arbitrary semantic network of persistent objects. However, to simplify the most common kinds of queries, it is recommended that VirtualDictionarySet be used as the general-purpose Collection for the major aggregations of application entities in the database.
A DictionarySet may index its elements on any number of single-valued and/or multi-valued unary key selector messages, which may be added or removed at any time by ordinary (though potentially large) transactions, and DictionarySet uses these to provide efficient query-building methods which return subsets of its contents, allowing more complex queries to be built by union and intersection of these sets.
A previous article noted the optimisation possible by using #for:equalsNoCopy: which returns the actual virtual set within the VirtualDictionarySet, instead of #for:equals: which returns a copy of it, when there is no intention to add or remove elements to or from the returned answer set. This article concerns optimisation of queries using #for:between:and:.
The set returned by this method may be used to build queries in the usual way, by union and intersection with other sets, but it is as well to know that it is typically slower than #for:equals:. This is because, for example in the query: journeys for: #startDate between: aDate and: bDate, the answer set is constructed by finding (efficiently) the integer indexes of the (nearest etc) elements at the keys aDate and bDate and then enumerating the keys between those two, using integer index access each time, to add their values into the constructed answer set, rather than simply answering an existing set of multiple values at a key (or the element at a single-valued key in a constructed set by itself).
If, therefore, the partial answer set from #for:between:and: is large, it may be more efficient to intersect the sets returned by other parts of the query first, and enumerate that smaller result with #select: to return the subset of those elements which meet the range criterion.
jc
Join the forum discussion
Leave a Reply
You must be logged in to post a comment.

cialis cod
buy fioricet with codeine
buy mulberry grey hobo
adipex non prescription
phentermine effectiveness
medicin depression buy
christian louboutin black petal crepe sandals
tramax tramadol
ultram drug test
dice games instructions
phentermine in florida
buy proscar no prescription
gambling resource
pain medication ultram
drug zolpidem
buy soma where
phentermine without rx
fendi black leather peekaboo bag
accutane and results
no rx pharmacy
viagra cheap prescription
cialis in stock
poker
ambien symptoms
cheap prescription drug
women's health online weight loss program
clomid pill
salvatore ferragamo pink varina ballet shoes
prescription drugs generic medicines brand product
gucci black monogram handbag
levitra professional international mail order
buying viagra online in britain
revatio cost
pharmacy mexico
fat burning pills that really work
house of bingo download
mexico pain meds
uk casino online
weight loss pill helps digestion
casino game online play
online poker software
klonopin half life
christian louboutin black sequins helmut pumps
canada cialis online
non prescription relief for severe pain
cialis prescription
burberry black check low top trainers
caribbean stud poker
clonazepam recreational
mecca bingo
online gambling bonuses
mylan xanax
christian louboutin globe 100 suede boots
blackjack game funny
casino chip
how does cialis work
cheap phentermine no prescription needed
soma overdose
weight loss home remedies
video online slots
lexapro paxil
gucci brown boots
phentermine 37.5 overnight delivery
generic tadalafil
casino 770
gel viagra
blackjack sites
craps strategy
augmentin cheap
cheap phentermine and adipex without perscription
chanel patent pink ballerina flats
american casino
jimmy choo red perforated ornament lohla bag
buy prescription drugs with no prescription
lancel golden wrinkle premier flirt
discount sildenafil
where to play bingo
hoyle casino
cheap generic viagra online
hydroxyzine hcl 25
lasix diuretics
effects carisoprodol
natural appetite suppressants
viagra online best price
online casino register
valium on line
casino slots online
weight loss supplement diet pill
lancel black wrinkle premier flirt
cartier black shoulder bag
valium cheap
professional blackjack
buy cialis delived next day
cialis free sample canada
find tadalafil
generic soma
tory burch deep blue tory logo rain boots
cialis vs cialis professional
buy a weight loss program
bingo gambling
drugs on line
gambling online sites
christian louboutin black sequins very prive pumps
herbal weight loss
buy zolpidem
canadian prescription drugs
saints and sinners bingo
carisoprodol no prescription
no deposit casino bonus code
pheromones for sale
gala bingo online
no prescription needed online pharmacies
cialis day next
jimmy choo beige perforated ornament lohla bag
buying medications online without a prescription
back pain pills
prada grey stitched wallet
canada cialis generic
cymbalta vs effexor
fendi light coffee monogram handbag
appetite suppressant buy
high stakes poker
discount plavix
ultram online prescription
cialis dosages
valentino blue snakeskin clutch
louis vuitton monogram vernis white roxbury drive
drugs used in treating depression
find tadalafil
valium without a prescription
super poker
gambling systems
can women take viagra
phentermine no prescriptions
generic nexium
miu miu crimson shoulder bag
order levitra on line
how fast does meridia work
methylprednisolone
purchase celine black shoulder bag
ultram best price
phentermine hci
bingo games on pc
tylenol with codeine dose
buy prescription drugs xanax
cialis prescription
ultram effects
meridia no rx
poker canada
givenchy blue shoulder bag