|
Модераторы: Akella |
|
Radekk |
|
||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 11.4.2013 Репутация: нет Всего: нет |
На локальной машине Firebird 2.5 Charset UTF+8 collate UNICODE_CI_AI , page size 16384
Колэйшн выбрал, чтобы искал и диакритику. Добавил индексы на поля по которым идет выборка и нет никакого движения, таблица небольшая 14.5К записей. field_name Varchar(500) charset UTF-8 collate UNICODE_CI_AI запрос типа (тот же результат дает и containing)
Выдает Prepare time = 15ms Execute time = 3s 963ms Avg fetch time = 188,71 ms Та же самая таблица но уже в мускуле выдает совсем другие результаты, при чем даже без индексов и прочего.
разница просто бешенная. никак не могу понять что я делаю не так??? |
||||
|
|||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
Конструкция
не может использовать индекс по table_field для отбора. Зря старался. Быстрое выполнение в MySQL скорее всего определяется тем, что вся таблица (или покрывающий индекс, если имеется) была загружена в кэш (или уже лежала в нём) и обрабатывалась чисто в памяти. А Firebird явно возил носом по диску. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Radekk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 11.4.2013 Репутация: нет Всего: нет |
Akina,
а не подскажете тогда как можно это дело ускорить? ну или хоть в какую сторону копать? я уже и в mssql проверил - тоже быстро отрабатывает попробовал создать пустую базу с одной таблицей в фаерберде и картина никак не изменилась. Это сообщение отредактировал(а) Radekk - 24.9.2015, 13:27 |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
Для конкретно этого запроса единственное видимое ускорение - это создание индекса по (nume, table_field) или наоборот (для покрывающего индекса неважно, скорее всего). Но главное - это обеспечить попадание индекса или таблицы в кэш и не-вымывание его оттуда, чтобы не было обращений к диску. Как - не подскажу.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
3s на full scan 15к записей -- это можэт быть что угодно, только не проблемы с неправильными индэксами. Ну, там, база забита незакоммиченными транзакцыями или винт подыхает или всё в первый раз достаётся с диска, включая весь сервер firebird. В общем, ищите проблемы не в вашэм запросе.
|
|||
|
||||
Radekk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 11.4.2013 Репутация: нет Всего: нет |
путем долгого долбления головой в стену нашел в чем проблема была.
на этой же машине стояла еще версия 2.1 на 3021 порту, 2.5 стояла на стандартном 3050, после того как снес все к х..ам собачьим и переустановил последнюю версию фаерберда заработало Prepare time = 16ms Execute time = 93ms хотя две базы устанавливали по инструкции от IBExpertise. Но видимо мешали они друг дружке.
фаерберд текстовые поля не индексирует или вы к тому что запрос типа '%string_i_want_to_find%' полюбому через всю таблицу будет пробегать и индексы пофигу??? еще вопрос, на работающей базе если создать индекс, он чтобы заработал надо очистить таблицу и по новой данные в нее залить??? или он сам проиндексирует уже присутствующие данные, а остальные будет индексировать по мере поступления? |
|||
|
||||
Akina |
|
||||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
Конечно, пофиг... Представь, что у тебя телефонный справочник. По алфавиту. Найти всех Ивановых - да элементарно, открываем на букву И... А попробуй найти всех, скажем, Маргарит... Добавлено через 1 минуту и 34 секунды Индексирование будет выполнено в момент создания, если не установлено какое-нить IGNORE_INDEX. Добавлено через 3 минуты и 28 секунд
Если это делалось штатным инсталлером и правкой конфигов - то у тебя тупо была проблема пересечения регистрации одноимённых модулей. Установка на одной машине двух и более инстансов FB - задача ни фига не тривиальная... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
Radekk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 11.4.2013 Репутация: нет Всего: нет |
Еще один вопрос по поводу индекса, в IBExpert создаю индекс по полю таблицы, после компиляции он показывает что индекс активен и статистику, а когда делаешь выборку по индексам то напротив индекса в столбце RDB$INDEX_INACTIVE висит значение NULL вместо нуля(единица как я полнял если индекс не активен).
Это нормально или надо запросом активировать индекс???? всем спасибо за помощь. Это сообщение отредактировал(а) Radekk - 1.10.2015, 13:25 |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
А какая разница? ты проверь, что индекс используется при выполнении запросов, когда он по уму использоваться обязан. Если да - то не пофиг ли, чего там в таблице, которая не влияет на работу, а только даёт некие сведения? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Radekk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 11.4.2013 Репутация: нет Всего: нет |
а есть у фаерберда тогда что-то на подобии explain в mysql, например? ну чтоб видно было использовался ли индекс при выборке из таблицы??? или это можно где в самом IBExpert посмотреть??? |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
А набрать "show execution plan" в строке поиска на сайте документации firebird религия не позволила?
http://www.firebirdsql.org/manual/isql-set...l#isql-set-plan -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Radekk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 11.4.2013 Репутация: нет Всего: нет |
я конечно RTFM всегда, но у Борри больше 800 страниц, все за один присест не осилишь.... И про "show execution plan" первый раз от вас услышал. Спасибо за объяснение и линк, буду читать. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 453 |
Ну ты ж сам ссылаешься на MySQL - а какими, спрашивается, словами там в документации описывается назначение explain? Это только у Microsoft есть такая порочная практика - придумывать свои уникальные термины и определения, порой вопреки всякой логике... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Radekk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 11.4.2013 Репутация: нет Всего: нет |
||||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Не по любому -- во многих базах есть full text search indexes, которые помогают в некоторых таких случаях (там всё достаточно сложно, на самом деле), но создаваемый по умолчанию btree здесь действительно ничем не поможэт. |
|||
|
||||
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |