Вы также можете попробовать интерпретатор BeanShell :
Interpreter interpreter = new Interpreter();
interpreter.eval("result = (7+21*6)/(32-27)");
System.out.println(interpreter.get("result"));
Лучшее представление индекса растрового изображения, если дано приведенное выше пример:
Identifier Gender RowID
1 Female R1
2 Male R2
3 Male R3
4 Unspecified R4
5 Female R5
индекс растрового изображения в столбце пола будет (концептуально) выглядеть следующим образом:
Gender R1 R2 R3 R4 R5
Female 1 0 0 0 1
Male 0 1 1 0 0
Unspecified 0 0 0 1 0
Индексы растрового изображения - это используется, когда количество различных значений в столбце относительно невелико (рассмотрим противоположное, когда все значения уникальны: индекс растрового изображения будет таким же широким, как каждая строка, и , что делает его похожим на одну большую матрица идентичности.)
Таким образом, с этим индексом на месте запроса типа
SELECT * FROM table1 WHERE gender = 'Male'
база данных ищет совпадение в значениях пола в индексе, находит все идентификаторы строк, в которых бит был установлен в 1, а затем переходит и получает таблица результатов.
Запрос вроде:
SELECT * FROM table1 WHERE gender IN ('Male', 'Unspecified')
получит 1 бит для Male, 1 бит для Unspecified, выполнит побитовое ИЛИ, а затем получит строки, в которых результирующие биты равны 1.
Итак, преимущества использования индекс растрового изображения над индексом дерева ab * - это хранилище (с низкой мощностью, растровые индексы довольно компактны) и возможность выполнять побитовые операции перед разрешением фактических идентификаторов строк, что может быть довольно быстрым.
Обратите внимание, что индексы растровых изображений могут влиять на производительность при вставке / удалении (концептуально, вы добавляете / удаляете столбец в / из растрового изображения и соответственно изменяете его ...), и может создать много конфликтов, поскольку обновление строки может заблокировать всю соответствующую запись растрового изображения, и вы не можете обновить другую строку (с тем же значением растрового изображения), пока первое обновление не будет зафиксировано / откатится.
Преимущество достигается при фильтрации по нескольким столбцам, тогда соответствующие индексы могут быть объединены с помощью побитовых операций перед фактическим выбором данных. Если у вас пол, цвет глаз, цвет волос тогда запрос
select * from persons where
gender = 'male' and
(eye_colour = 'blue' or hair_colour = 'blonde')
сначала будет выполнять побитовое или между индексом eye_colour ['blue'] и индексом hair_colour ['blonde'] и, наконец, поразрядным, и между результатом и индексом пола ['male']. Эта операция выполняется очень быстро как с точки зрения вычислений, так и с точки зрения ввода-вывода.
Результирующий битовый поток будет использоваться для выбора фактических строк.
Растровые индексы обычно используются в «звездообразных соединениях» в приложениях хранилищ данных.
Как указано в статье в Википедии, они используют побитовые операции, которые могут работать лучше, чем сравнение типов данных, таких как целые числа, поэтому краткий ответ - увеличение скорости запросов.
Теоретически, чтобы выбрать всех мужчин или всех женщин из вашего примера, потребуется меньше вычислений и меньше времени.
Просто подумайте о том, как это работает под капотом, чтобы понять, почему это происходит быстрее. Логически бит является либо истинным, либо ложным. Если вы хотите выполнить запрос с использованием предложения WHERE, это в конечном итоге будет оценивать как истинное, так и ложное значение для записей, чтобы определить, включать ли их в ваши результаты.
Предисловие - все остальное предназначено для простых людей и не технических специалистов.
Итак, следующий вопрос: что нужно, чтобы получить истинное значение? Даже сравнение числовых значений означает, что компьютер должен ...
повторите, если вы используете предложение where, состоящее из нескольких частей, например Where "this = this AND that = that"
Но, используя поразрядную логику, вы просто смотрите на значения 0 (ложь) и 1 (истина). 90% накладных расходов на работу по сравнению устраняются.