Главная страница
    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.035 c
14-1090245547
Ega23
2004-07-19 17:59
2004.08.08
Коллеги, подскажите форум.


1-1090529183
Sergio4
2004-07-23 00:46
2004.08.08
Уникальный код


14-1090228015
Некрофил-затейник__
2004-07-19 13:06
2004.08.08
Потрепатся


14-1090583108
Andrey
2004-07-23 15:45
2004.08.08
Разовая удаленная работа для Delphi программиста


1-1090476209
Form
2004-07-22 10:03
2004.08.08
Дамп памяти процесса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский