Частичный индекс.md
This commit is contained in:
parent
d5375652d0
commit
f7f3e26075
@ -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` не задан, включаются в индекс, а остальные игнорируются, что делает индекс более компактным и эффективным.
|
||||
|
||||
***
|
||||
## Мета информация
|
||||
|
@ -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 разработка]]
|
||||
|
64
dev/java/Странности в Java.md
Normal file
64
dev/java/Странности в Java.md
Normal file
@ -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]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
|
BIN
meta/files/images/Pasted image 20241030215828.png
Normal file
BIN
meta/files/images/Pasted image 20241030215828.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 MiB |
BIN
meta/files/images/Pasted image 20241030223908.png
Normal file
BIN
meta/files/images/Pasted image 20241030223908.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 MiB |
BIN
meta/files/images/comp/Pasted image 20241030215828.png
Normal file
BIN
meta/files/images/comp/Pasted image 20241030215828.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 391 KiB |
@ -0,0 +1 @@
|
||||
87bc6f0c0cfed20b67d085315d75636e
|
BIN
meta/files/images/comp/Pasted image 20241030223908.png
Normal file
BIN
meta/files/images/comp/Pasted image 20241030223908.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 288 KiB |
@ -0,0 +1 @@
|
||||
31257abc8a66311c9afce7039693323c
|
BIN
meta/files/images/webp/Pasted image 20241030215828.webp
Normal file
BIN
meta/files/images/webp/Pasted image 20241030215828.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 138 KiB |
@ -0,0 +1 @@
|
||||
87bc6f0c0cfed20b67d085315d75636e
|
BIN
meta/files/images/webp/Pasted image 20241030223908.webp
Normal file
BIN
meta/files/images/webp/Pasted image 20241030223908.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
@ -0,0 +1 @@
|
||||
31257abc8a66311c9afce7039693323c
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user