SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
Индекс SP-GIST

Индекс SP-GIST - это тип индекса, используемый в PostgreSQL для улучшения производительности поиска в геоданных и других многомерных данных.

Индекс SP-GIST разбивает пространство данных на маленькие области, называемые "ячейками", и строит по ним дерево. Каждая ячейка может содержать несколько объектов, и запросы на поиск объектов могут быть выполнены путем просмотра только тех ячеек, где могут находиться искомые объекты.

Создание индекса может быть выполнено с помощью оператора CREATE INDEX. Также индекс может быть использован для выполнения запросов на поиск объектов в многомерных данных.
👍3
Дана следующая таблица:

| OrderID | CustomerID | OrderDate | TotalAmount |
|---------|------------|------------|-------------|
| 1 | 1001 | 2022-05-01 | 150.00 |
| 2 | 1002 | 2022-06-15 | 250.00 |
| 3 | 1001 | 2022-07-20 | 100.00 |
| 4 | 1003 | 2022-08-10 | 300.00 |
| 5 | 1002 | 2022-09-05 | 200.00 |

Какой из следующих SQL запросов отберет заказы, сделанные покупателем с ID равным 1001?

A) SELECT * FROM Orders WHERE CustomerID = 1001
B) SELECT * FROM Orders WHERE CustomerID = '1001'
C) SELECT * FROM Orders WHERE CustomerID = '1001' ORDER BY OrderDate DESC
D) SELECT * FROM Orders WHERE CustomerID = 1001 AND TotalAmount > 200.00
1👍1
Выберите ответ на вопрос выше ⬆️
Anonymous Quiz
71%
A
23%
B
6%
C
0%
D
👍6
Возможности SQLite

Частичные индексы (Partial Indexes)

При построении индекса можно указать условие попадания строки в индекс, к примеру, одна из колонок не пустая, а другая равна заданному значению.

Индексы на выражение (Indexes On Expressions)

Если в запросах к таблице часто используется выражение, то можно построить индекс по нему. Однако следует иметь в виду, что пока оптимизатор не очень гибок и перестановка столбцов в выражении приведет к отказу от использования индекса.

Вычисляемые колонки (Generated Columns)

Если данные столбца представляют собой результат вычисления выражения по другим столбцам, то можно создать виртуальный столбец. Есть два вида: VIRTUAL (вычисляется каждый раз при чтении таблицы и не занимает места) и STORED (вычисляется при записи данных в таблицу и место занимает). Разумеется записывать данные в такие столбцы напрямую нельзя.

R-Tree индекс

Индекс предназначен для быстрого поиска в диапазоне значений/вложенности объектов, т.е. задачи типичной для гео-систем, когда объекты-прямоугольники заданы своей позицией и размером и требуется найти все объекты, которые пересекаются с текущим. Данный индекс реализован в виде виртуальной таблицы (см. ниже) и это индекс только по своей сути. Для поддержки R-Tree индекса требуется собрать SQLite с флагом SQLITE_ENABLE_RTREE (по умолчанию не установлен).
👍2
Как получить информацию о структуре БД для документации

Создаём документацию БД и словарь данных информационной системы своими руками. Полезные SQL-скрипты и приемы документирования базы данных

Смотреть статью
👍6
DuckDb: эффективная OLAP-база данных

DuckDB позволяет выполнять аналитические запросы, благодаря столбцово-векторному механизму базы данных. Это аналитическая или OLAP-версия SQLite, которая является более простой в установке по сравнению с Microsoft SQL Server и Postgres.

Преимущества DuckDB

- DuckDB имеет высокую производительность при выполнении сложных запросов
- Она работает с большим объемом данных
- DuckDB поддерживает стандарт SQL и имеет обширную библиотеку функций
- Она имеет небольшой размер и быстро устанавливается
- DuckDB прост в использовании и имеет дружественный интерфейс

Недостатки DuckDB

- Она не имеет поддержки многопользовательских приложений
- DuckDB не поддерживает некоторые функции, которые поддерживаются другими СУБД
👍4
Пример

Следующий запрос выбирает все данные строк из таблицы users где age имеет значения 18,19 и 21.
👍9
Представьте, что у вас есть две таблицы: Orders и Customers. Таблица Orders содержит поля OrderID, CustomerID, и OrderDate. Таблица Customers содержит CustomerID, Name, и City.

Напишите запрос SQL, который покажет имена всех клиентов из города "New York", которые сделали более двух заказов.
👍7
Объяснение Запроса
Подзапрос: Здесь используется подзапрос для выбора CustomerID из таблицы Orders, группируя по CustomerID и применяя условие HAVING COUNT(OrderID) > 2. Это выбирает клиентов, сделавших более двух заказов.

Объединение (JOIN): Основной запрос использует JOIN для соединения таблиц Customers и результата подзапроса по CustomerID.

Условие WHERE: Фильтрация происходит по полю City в таблице Customers, чтобы выбрать только тех клиентов, которые находятся в "New York".


Этот запрос тестирует понимание кандидата в области объединения таблиц, работы с агрегатными функциями и подзапросами, а также фильтрации данных в SQL.
👍65
#Вопросы_с_собеседования
Расскажите алгоритм решения следующей задачи

Предположим, у вас есть две таблицы: Orders (Заказы) и Customers (Клиенты). Таблица Orders содержит колонки OrderID, CustomerID и OrderDate, а таблица Customers содержит CustomerID, Name и Country. Как бы вы нашли имена всех клиентов из США, которые не сделали ни одного заказа после 1 января 2022 года?

Для решения этой задачи можно использовать подзапросы или соединения таблиц. Один из подходов - использовать левое соединение (LEFT JOIN) между Customers и Orders, фильтруя заказы после указанной даты. Затем можно использовать WHERE условие, чтобы выбрать только тех клиентов, у которых нет соответствующих записей в Orders после этой даты и которые находятся в США. Это демонстрирует понимание соединений таблиц, фильтрации и работы с датами в SQL.
👍61🔥1