diff --git a/dev/database/postgresql/Частичный индекс.md b/dev/database/postgresql/Частичный индекс.md index 012bdef2..1daeaac3 100644 --- a/dev/database/postgresql/Частичный индекс.md +++ b/dev/database/postgresql/Частичный индекс.md @@ -13,7 +13,7 @@ CREATE INDEX fk_not_null ON pgconf(fk_id) WHERE fk_id IS NOT NULL; ``` -При этом работа индекса не ускоряется, так как СУБД автоматически оптимизирует выполнение запроса. Однако, ==это позволит уменьшить размер индекса, что на больших объемах данных также может положительно сказаться на производительности.== Поиск в индексе размером 15 ГБ выполняется быстрее, чем в индексе на 200 ГБ. +Частичные индексы позволяют не только уменьшить размер индекса, но и обеспечить более эффективную работу с таблицами, содержащими данные, которые имеют различный статус (например, активные и удаленные записи). Это особенно полезно в случаях, когда необходимо поддерживать уникальность данных и при этом исключить определенные записи из индекса, такие как удаленные или обработанные. **Преимущества:** - **Уменьшение размера индекса**: Индекс включает только необходимые записи, что уменьшает его общий объём. @@ -28,7 +28,8 @@ WHERE fk_id IS NOT NULL; - Когда необходимо уменьшить размер индекса за счёт исключения ненужных записей, что позволяет сэкономить место на диске и ускорить операции поиска. - Когда таблица содержит большое количество записей с одинаковыми значениями (низкая [[../Селективность колонки|селективность]]), и вам нужно индексировать только те записи, которые имеют уникальные или более специфичные значения. - В ситуациях, когда индекс нужен для работы с данными, которые соответствуют определённому условию, например, только "необработанные" записи. -## Таблицы с колонкой статуса +## Применение частичных индексов +### Таблицы с колонкой статуса Часто в приложениях есть таблицы, которые содержат колонку статуса (`state`). Обычно статус разделяет записи на "обработанные" и "необработанные". Индекс нам часто нужен именно по необработанным данным. Создавая частичный индекс только по необработанным данным, мы можем ускорить выполнение запроса и уменьшить размер индекса. Возьмем типичную табличку, в которой есть какие-то статусы мы хотим находить данные по этому статусу. @@ -53,6 +54,17 @@ WHERE fk_id IS NOT NULL; ![[../../../meta/files/images/Pasted image 20241021225124.png]] +### Для мягкого удаления +Представьте, что вам нужно поддерживать уникальность данных, например, адресов электронной почты в таблице базы данных. Однако в таблице есть строки, [[../../../../../_inbox/Tombstone|помеченные как удаленные]] с помощью поля `deleted_at`, и они также остаются в базе данных. В такой ситуации создание уникального индекса на поле с электронной почтой становится невозможным из-за дублирующихся значений. Частичный индекс решает эту проблему, позволяя включать в индекс только записи, которые не помечены как удаленные. + +В PostgreSQL добавление уникального индекса для активных пользователей выглядит так: +```sql +CREATE UNIQUE INDEX users_email_uniq ON users ( + email +) WHERE deleted_at IS NULL; +``` + +В этом случае строки, у которых `deleted_at` не задан, включаются в индекс, а остальные игнорируются, что делает индекс более компактным и эффективным. *** ## Мета информация diff --git a/dev/java/Примитивный тип.md b/dev/java/Примитивный тип.md index aaed29dc..eb682ca5 100644 --- a/dev/java/Примитивный тип.md +++ b/dev/java/Примитивный тип.md @@ -5,14 +5,15 @@ aliases: tags: - maturity/🌱 date: 2024-10-19 -zero-link: -parents: -linked: --- -- Логические: boolean - true, false -- Целочисленные: byte, short, int, long - 42, -1 -- Дробные: float, double - 3.141, NaN +- Логические: boolean +- Целочисленные: byte, short, int, long +- Дробные: float, double - Символьные (UTF-16): CHAR + +![[../../meta/files/images/Pasted image 20241030215828.png]] +![[../../meta/files/images/Pasted image 20241030223908.png]] + *** ## Мета информация **Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]] diff --git a/dev/java/Странности в Java.md b/dev/java/Странности в Java.md new file mode 100644 index 00000000..f58f5220 --- /dev/null +++ b/dev/java/Странности в Java.md @@ -0,0 +1,64 @@ +--- +aliases: + - polygenelubricants +tags: + - maturity/🌱 +date: 2024-10-30 +--- +## Арифметические +### Отсутствие переполнения +```java +System.out.println(-Integer.MIN_VALUE) // -2147483648 +``` + +Можно использовать `Math.negateExact()`, чтобы получить исключение + +```java +Math.negateExact(Integer.MIN_VALUE) +``` + +### Абсолютное значение +```java +Math.abs(-Integer.MIN_VALUE) // -2147483648 +``` + +### Character +```java +System.out.println(Character.isDigit('⑤')); // false +System.out.println(Character.getNumericValue('⑤') == 5); // true +``` +## Прочее +### polygenelubricants +```java +System.out.println("polygenelubricants".hashCode()); // Integer.MIN_VALUE +``` +### +```java +class Hello { + public static void main(String[] args) { + // Безобидный комментарий \u000a System.out.println("Bugaga") ; + System.out.println("Hello World"); + } +} +``` + +Sout: +``` +Bugaga +Hello World +``` + + +*** +## Мета информация +**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]] +**Родитель**:: +**Источник**:: +**Создана**:: [[2024-10-30]] +**Автор**:: +### Дополнительные материалы +- + +### Дочерние заметки + + diff --git a/meta/files/images/Pasted image 20241030215828.png b/meta/files/images/Pasted image 20241030215828.png new file mode 100644 index 00000000..dba04442 Binary files /dev/null and b/meta/files/images/Pasted image 20241030215828.png differ diff --git a/meta/files/images/Pasted image 20241030223908.png b/meta/files/images/Pasted image 20241030223908.png new file mode 100644 index 00000000..a3282a58 Binary files /dev/null and b/meta/files/images/Pasted image 20241030223908.png differ diff --git a/meta/files/images/comp/Pasted image 20241030215828.png b/meta/files/images/comp/Pasted image 20241030215828.png new file mode 100644 index 00000000..b05a85d0 Binary files /dev/null and b/meta/files/images/comp/Pasted image 20241030215828.png differ diff --git a/meta/files/images/comp/Pasted image 20241030215828.png.md5 b/meta/files/images/comp/Pasted image 20241030215828.png.md5 new file mode 100644 index 00000000..ea02bea7 --- /dev/null +++ b/meta/files/images/comp/Pasted image 20241030215828.png.md5 @@ -0,0 +1 @@ +87bc6f0c0cfed20b67d085315d75636e diff --git a/meta/files/images/comp/Pasted image 20241030223908.png b/meta/files/images/comp/Pasted image 20241030223908.png new file mode 100644 index 00000000..ca52e844 Binary files /dev/null and b/meta/files/images/comp/Pasted image 20241030223908.png differ diff --git a/meta/files/images/comp/Pasted image 20241030223908.png.md5 b/meta/files/images/comp/Pasted image 20241030223908.png.md5 new file mode 100644 index 00000000..ed57e87b --- /dev/null +++ b/meta/files/images/comp/Pasted image 20241030223908.png.md5 @@ -0,0 +1 @@ +31257abc8a66311c9afce7039693323c diff --git a/meta/files/images/webp/Pasted image 20241030215828.webp b/meta/files/images/webp/Pasted image 20241030215828.webp new file mode 100644 index 00000000..609c8355 Binary files /dev/null and b/meta/files/images/webp/Pasted image 20241030215828.webp differ diff --git a/meta/files/images/webp/Pasted image 20241030215828.webp.md5 b/meta/files/images/webp/Pasted image 20241030215828.webp.md5 new file mode 100644 index 00000000..ea02bea7 --- /dev/null +++ b/meta/files/images/webp/Pasted image 20241030215828.webp.md5 @@ -0,0 +1 @@ +87bc6f0c0cfed20b67d085315d75636e diff --git a/meta/files/images/webp/Pasted image 20241030223908.webp b/meta/files/images/webp/Pasted image 20241030223908.webp new file mode 100644 index 00000000..00146c54 Binary files /dev/null and b/meta/files/images/webp/Pasted image 20241030223908.webp differ diff --git a/meta/files/images/webp/Pasted image 20241030223908.webp.md5 b/meta/files/images/webp/Pasted image 20241030223908.webp.md5 new file mode 100644 index 00000000..ed57e87b --- /dev/null +++ b/meta/files/images/webp/Pasted image 20241030223908.webp.md5 @@ -0,0 +1 @@ +31257abc8a66311c9afce7039693323c diff --git a/meta/zero/00 Java разработка.md b/meta/zero/00 Java разработка.md index 65159dc0..8402ab12 100644 --- a/meta/zero/00 Java разработка.md +++ b/meta/zero/00 Java разработка.md @@ -28,6 +28,7 @@ title: Java разработка - [[../../dev/java/Примитивный тип|Примитивный тип]] - [[../../dev/java/Ссылочный тип|Ссылочный тип]] - [[../../dev/java/Передача значений в метод в Java|Передача значений в метод в Java]] +- [[../../dev/java/Странности в Java|Странности в Java]] ## Версии Java - [[Java 1]] - [Java 7](Java%207.md)