Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

Может ли сервер IB изменить план запроса после добавления данных?   Найти похожие ветки 

 
Sergey Vorobyev   (2004-07-13 11:43) [0]

Привет всем!

Жил да был один SQL запрос. Через некоторое время он стал выполняться медленно-медленно (было 3 сек., стало 1.5 мин). Стали смотреть план запроса, выяснилось, что туда вкрался один NATURAL, хотя раньше его не было. Я не очень-то разбираюсь в планах, только периодически смотрю, чтобы были нужные индексы и "натуралов" было меньше (это помогает мне оптимизировать запросы).

Обновили статистику, сделали backup/restore не помогло, проверяли на IB6,7.x - результат тот же.

Замечу, что в структуре БД никаких изменений не было (ни индексов, ни полей, ни таблиц и т.п. не добавлялось и не изменялось), структуру базы не трогали уже месяц, естественно только данные добавлялись - и вот такая ситуация.

Ощущение такое, что при достижении какого-то количества данных сервер поменял план запроса, что-то других предположений нет..

Вообще такое возможно?

Спасибо.


 
Sandman25 ©   (2004-07-13 11:47) [1]

Да, план зависит от числа данных в таблицах. При обновлении статистики план рассчитывается заново. Если всегда нужен один и тот же план, используйте директивы оптимизатора.


 
Sergey Vorobyev   (2004-07-13 13:04) [2]


> Да, план зависит от числа данных в таблицах. При обновлении
> статистики план рассчитывается заново.

А где про это можно подробнее (на www.ibase.ru не нашел)


> используйте директивы оптимизатора.

Это как?

Еще слышал, что можно прямо в запросе указать какой использовать план, правда ли это? Если да, то как?


 
Ильш ©   (2004-07-13 13:14) [3]

читай SQL Ref
там полное описание синтаксиса


 
Sandman25 ©   (2004-07-13 14:02) [4]

[2] Sergey Vorobyev   (13.07.04 13:04)

Я, к сожалению, плохо разбираюсь в IB.


 
Ильш ©   (2004-07-13 14:09) [5]

SELECTRetrieves data from one or more tables. Available in SQL, DSQL, and isql.

SELECT [TRANSACTION transaction]
[DISTINCT | ALL]
{* | <val> [, <val> …]}
[INTO :var [, :var …]]
FROM <tableref> [, <tableref> …]
[WHERE <search_condition>]
[GROUP BY col [COLLATE collation] [, col [COLLATE collation] …]
[HAVING <search_condition>]
[UNION <select_expr> [ALL]]
[PLAN <plan_expr>]
[ORDER BY <order_list>]
[FOR UPDATE [OF col [, col …]]];

<val> = {
col [<array_dim>] | :variable
| <constant> | <expr> | <function>
| udf ([<val> [, <val> …]])
| NULL | USER | RDB$DB_KEY | ?
} [COLLATE collation] [AS alias]

<array_dim> = [[x:]y [, [x:]y …]]

<constant> = num | "string" | charsetname "string"

<function> = COUNT (* | [ALL] <val> | DISTINCT <val>)
| SUM ([ALL] <val> | DISTINCT <val>)
| AVG ([ALL] <val> | DISTINCT <val>)
| MAX ([ALL] <val> | DISTINCT <val>)
| MIN ([ALL] <val> | DISTINCT <val>)
| CAST (<val> AS <datatype>)
| UPPER (<val>)
| GEN_ID (generator, <val>)

<tableref> = <joined_table> | table | view | procedure
[(<val> [, <val> …])] [alias]

<joined_table> = <tableref> <join_type> JOIN <tableref>
ON <search_condition> | (<joined_table>)

<join_type> = [INNER] JOIN
| {LEFT | RIGHT | FULL } [OUTER]} JOIN

<search_condition> = <val> <operator> {<val> | (<select_one>)}

| <val> [NOT] BETWEEN <val> AND <val>

| <val> [NOT] LIKE <val> [ESCAPE <val>]

| <val> [NOT] IN (<val> [, <val> …] | <select_list>)

| <val> IS [NOT] NULL

| <val> {>= | <=}

| <val> [NOT] {= | < | >}

| {ALL | SOME | ANY} (<select_list>)

| EXISTS (<select_expr>)

| SINGULAR (<select_expr>)

| <val> [NOT] CONTAINING <val>

| <val> [NOT] STARTING [WITH] <val>

| (<search_condition>)

| NOT <search_condition>

| <search_condition> OR <search_condition>

| <search_condition> AND <search_condition>

<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}

<plan_expr> =
[JOIN | [SORT] [MERGE]] ({<plan_item> | <plan_expr>}
[, {<plan_item> | <plan_expr>} …])

<plan_item> = {table | alias}

{NATURAL | INDEX (<index> [, <index> …]) | ORDER <index>}

<order_list> =
{col | int} [COLLATE collation]
[ASC[ENDING] | DESC[ENDING]]
[, <order_list> …]



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
14-1090216591
Dimman
2004-07-19 09:56
2004.08.08
UPX unpacker


4-1088494582
Тимохов
2004-06-29 11:36
2004.08.08
Область только для чтения.


14-1090344974
DiamondShark
2004-07-20 21:36
2004.08.08
Задачи


14-1090237879
sucer
2004-07-19 15:51
2004.08.08
Подержка длинных имен под DOS


14-1090563446
Vlad Oshin
2004-07-23 10:17
2004.08.08
Кто сталкивался с таким в winworde?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский