Pull to refresh
78
0
Sayan Malakshinov @xtender

FBCS, Oracle ACE, performance tuning expert

Send message
Рад, что блог Oracle потихоньку оживает :)
Недавно опробовал такой подход вкупе с XML-функциями и натолкнулся на сыроватость еще xml-ных функций(например, очень хотел делать выборки а ля select * from xml_sequence(fujnction_returning_cursor())), так что пока на время это отложил.
Спасибо, заменил ссылку, а то не мог ее найти по сохранившейся ссылке.
Вы про планы каких запросов? Если из самодельного pkg_pivot, то cost увеличивается всего на 1 из-за dense_rank, а вообще в общем-то неудивительно, что запрос несколько тяжелее(не хуже, чем другие различные функции, вроде row_number,dense_rank и тд).

Для приведенного примера:
Сомневаюсь, что он появится в DDL, как спрашивает там ТС, но вообще, думаю было бы правильно его стандартизировать, т.к. в тех случаях, когда вся логика в самой базе это было бы удобно и правильно.
К сожалению, оригинальную ссылку на asktom.oracle.com найти сейчас не смог(странно, что она исчезла), но привел другую.
Да, его вариант в этих случаях гораздо правильнее(не нужно делать лишний запрос), но такие случаи достаточно редки, и хочется большей гибкости. Вообще, наверное, зря я не упомянул, что хотел в свое время добавить условие максимального ограничения для кол-ва столбцов прямо в функцию, но все руки не дотягивались и каждый раз делал в таких случаях просто select case when count(1)<=max_limit then count(1) else max_limit end as max_cols from…
От характера зависит… Знаю несколько людей в близком окружении, которые, наоборот, глобальные крупные задачи решают с большим интересом и усердием, чем многоэтапные унылые задачи для выполнения плана и премий. Кому-то нравится трогаться «с места в карьер», а кому-то охота медленно, но верно.
На вкус и цвет иконки топором не порубишь, но они и правда симпатичные :)
Не за что, всегда рад помочь и отлично понимаю, что миграция боевых серверов происходит редко :)
Функциям вообще насрать на индексы — вы вообще путаете совершенно разные вещи.

PS. и какой знаток баз данных еще и минусует?
Да причем тут выборки/вставки? Сравниваем функции, причем встроенные функции и пользовательские, причем алгоритм base64 никак не быстрее простого изменения типа.
Чтобы отпали последние вопросы по поводу размеров: как и когда выполняются функции?
Как я уже говорил — размер базы и таблицы значения не имеет. Имеет значение лишь кол-во вызовов. И уж собственная хранимка для декодирования base64 однозначно будет выполняться медленнее встроенной функции преобразования.
Как хранится тут не причем, это же функции. И вообще что-то я не нашел встроенной функции в MySQL для base64.
Проверил выполнение кодировки в hex и обратно:
«select test_hex(100000) from dual» выполнился за 2.3 секунды на слабеньком железе, где
CREATE FUNCTION `TEST_HEX`(i INTEGER(11))
    RETURNS int(11)
BEGIN
  DECLARE v TEXT;
  WHILE i > 0 DO
    SELECT UNHEX(HEX('a123')) into v from dual;
    SET i = i - 1;
  END WHILE;
  RETURN v;
END;

Ну, видимо, это проблема исключительно xtraDB.
Пруф, пожалуйста. Очень сомневаюсь, что изменение типа(обычный каст) будет дольше чем кодирование. Хотя хз, что у вас за субда.
А если хочется ну совсем уж извратиться «гениальностью», то можно вообще в базе все только в blob'aх хранить — совсем ничего не надо будет ничего «защищать».
Не ново, не серьезно, и в конце концов, если уж так делать то проще просто в HEX'е передавать — быстрее будет преобразовываться.

Information

Rating
Does not participate
Date of birth
Registered
Activity