Response
time is the time it takes for a query to return the first record. Total time is
the time it takes for the query to return all records. For an interactive
application, response time is important because it is the perceived time for
the user to receive visual affirmation that a query is being processed. For a
batch application, total time reflects the overall throughput.
Many query operations can be performed without having to store intermediate results. These operations are said to be pipelined. Examples of pipelined operations are projections, selections, and joins. Queries implemented with these operations can return results immediately. Other operations, such as SORT andGROUP-BY, require using all their input before returning results to their parent operations. These operations are said to require materialization. Queries implemented with these operations typically have an initial delay because of materialization. After this initial delay, they typically return records very quickly.
Queries with response time requirements should avoid
materialization. For example, using an index to implement ORDER-BY yields better response time than does
using sorting.
The ORDER-BY, GROUP-BY, and DISTINCT operations are all types of sorting. The SQL Server Compact
query processor implements sorting in two ways. If records are already sorted
by an index, the processor needs to use only the index. Otherwise, the
processor has to use a temporary work table to sort the records first. Such
preliminary sorting can cause significant initial delays on devices with lower
power CPUs and limited memory, and should be avoided if response time is
important.
In the context of multiple-column indexes, for ORDER-BY or GROUP-BY to consider a particular index, the ORDER-BY or GROUP-BY columns must match the prefix set of index columns with the exact order. For example, the index CREATE INDEX Emp_Name ON Employees ("Last Name" ASC, "First Name" ASC)can help optimize the following queries:
- ... ORDER BY / GROUP BY
"Last Name" ...
- ... ORDER BY / GROUP BY
"Last Name", "First Name" ...
It will not help
optimize:
- ... ORDER BY / GROUP BY
"First Name" ...
- ... ORDER BY / GROUP BY
"First Name", "Last Name" ...
For a DISTINCT
operation to consider a multiple-column index, the projection list must match
all index columns, although they do not have to be in the exact order. The
previous index can help optimize the following queries:
- ... DISTINCT "Last
Name", "First Name" ...
- ... DISTINCT "First
Name", "Last Name" ...
It will not help
optimize:
- ... DISTINCT "First
Name" ...
- ... DISTINCT "Last
Name" ...
No comments:
Post a Comment