Data Science. SQL hub
35.8K subscribers
922 photos
50 videos
37 files
981 links
По всем вопросам- @workakkk

@itchannels_telegram - 🔥лучшие ит-каналы

@ai_machinelearning_big_data - Machine learning

@pythonl - Python

@pythonlbooks- python книги📚

@datascienceiot - ml книги📚

РКН: https://vk.cc/cIi9vo
Download Telegram
📌 Возможности SQLite, которые вы могли пропустить

🔵Частичные индексы (Partial Indexes)
При построении индекса можно указать условие попадания строки в индекс, к примеру, одна из колонок не пустая, а другая равна заданному значению.
create index idx_partial on tab1(a, b) where a is not null and b = 5;
select * from tab1 where a is not null and b = 5; --> search table tab1 using index


🔵Индексы на выражение (Indexes On Expressions)
Если в запросах к таблице часто используется выражение, то можно построить индекс по нему. Однако следует иметь в виду, что пока оптимизатор не очень гибок и перестановка столбцов в выражении приведет к отказу от использования индекса.
create index idx_expression on tab1(a + b);
select * from tab1 where a + b > 10; --> search table tab1 using index ...
select * from tab1 where b + a > 10; --> scan table


🔵Вычисляемые колонки (Generated Columns)
Если данные столбца представляют собой результат вычисления выражения по другим столбцам, то можно создать виртуальный столбец. Есть два вида: VIRTUAL (вычисляется каждый раз при чтении таблицы и не занимает места) и STORED (вычисляется при записи данных в таблицу и место занимает). Разумеется записывать данные в такие столбцы напрямую нельзя.
create table tab1 (
a integer primary key,
b int,
c text,
d int generated always as (a * abs(b)) virtual,
e text generated always as (substr(c, b, b + 1)) stored
);


🔵 R-Tree индекс
Индекс предназначен для быстрого поиска в диапазоне значений/вложенности объектов, т.е. задачи типичной для гео-систем, когда объекты-прямоугольники заданы своей позицией и размером и требуется найти все объекты, которые пересекаются с текущим. Данный индекс реализован в виде виртуальной таблицы (см. ниже) и это индекс только по своей сути. Для поддержки R-Tree индекса требуется собрать SQLite с флагом SQLITE_ENABLE_RTREE (по умолчанию не установлен).
create virtual table idx_rtree using rtree (
id, -- ключ
minx, maxx, -- мин и макc x координаты
miny, maxy, -- мин и макc y координаты
data -- дополнительные данные
);

insert into idx_rtree values (1, -80.7749, -80.7747, 35.3776, 35.3778);
insert into idx_rtree values (2, -81.0, -79.6, 35.0, 36.2);

select id from idx_rtree
where minx >= -81.08 and maxx <= -80.58 and miny >= 35.00 and maxy <= 35.44;


Остальные возможности можно тут

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥42
➡️ Использование составных триггеров (compound triggers) Oracle

▪️Примеры таких триггеров в основном связаны с логированием изменений таблицы, я решила рассмотреть пример из двух таблиц, которые изменяют друг друга.

Дано: две таблицы orders и orders_detail.

CREATE TABLE TMP.orders
(
ID NUMBER, -- № заказа
DATE_DOC DATE, -- дата заказа
AMOUNT NUMBER, -- сумма заказа
DISCOUNT NUMBER -- скидка от 0 до 100%
);
CREATE TABLE TMP.orders_detail
(
ID NUMBER,
ID_ORDER NUMBER, -- № заказа
ID_GOODS NUMBER, -- идентификатор товара
PRICE NUMBER, -- цена товара
QTY NUMBER, -- количество
SUM_ORDER NUMBER -- стоимость заказа
);


Перед нами стоят задачи:

1) при обновлении поля orders.discount пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу;
2) при изменении orders_detail.price и(или) orders_detail.qty пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу;
3) orders_detail.sum_order считается по формуле: orders_detail.sum_order = orders_detail.price * orders_detail.qty * (1- orders.discount/100).

При таких задачах возникает ошибка мутирования таблиц ORA-04091: table is mutating.

Эта ошибка встречается тогда, когда триггер уровня строк пытается вы­полнить чтение или запись в таблицу, для которой сработал триггер.

Например, нам нужно пересчитать поле orders_detail.sum_order, а для этого нам нужно прочитать поле orders.discount(которое изменилось).
Начиная с Oracle Database 11g можно использовать compound(составные) триггеры. Они представляют собой четыре различных триггера, объединенных в один.

Вот пример синтаксиса такого триггера. ⤵️

Продолжение

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍3🔥1
📂Оптимизация данных в MS SQL

Одним из методов для оптимизации обработки, хранения и администрирования данных в базе данных и кубах MS SQL — это процесс создании партицирования данных.

Partitioning (партицирование или по-другому секционирование) — это разбиение таблицы на несколько частей, а эти части на одну или несколько файловых групп.

Партицирование необходимо для целей ускорения доступа чтения или изменения данных и администрирования. Т.к. выровненный индекс по таблице будет содержаться в каждой условно своей секции, то при чтении или изменении данных будет обращение к конкретной секции и конкретному индексу в этой секции.

Со стороны администрирования для процесса переноса (например архивирования) данных в другую таблицу без физического перемещения данных, а перемещения только логической секций, подлежащих этой операции, выполнение этого действия происходит мгновенно, что экономит время и ресурсы машины. Для этого необходимо подготовить таблицу «архив» — копию по структуре с таблицей источника, она может быть не партицированна.

Пример кода для переноса в таблицу:

ALTER TABLE DB.schema.table_sourse SWITCH PARTITION 1 TO DB.schema.table_arch;

Но если мы хотим перемещать в партицированную таблицу, то таблица приемник должна использовать ту же функцию и схему партицирования, или схему и функцию повторяющую нужные нам диапазоны секционирования. Так же таблица должна содержать CONSTRAINT (ограничение), которое накладывается по полю секционирования.

📌 Продолжение

@sqlhub
👍135🔥2
🦊 Kali Linux для продвинутого тестирования на проникновение. Sqlmap.

Наиболее распространенной и используемой уязвимостью на веб-сайтах является SQL-инъекция.

Одним из самых полезных и мощных инструментов для оценки уязвимостей SQL-инъекций является sqlmap. Инструмент написан на Python, который автоматизирует разведку и эксплуатацию Firebird, Microsoft SQL, MySQL (теперь называется MariaDB, разработанный сообществом и коммерчески поддерживаемый форк MySQL), Базы данных Oracle, PostgreSQL, Sybase и SAP MaxDB.

Мы продемонстрируем атаку SQL-инъекцией на базу данных Mutillidae.

1) Определить веб-сервер, внутреннюю систему управления базами данных и доступные базы данных.

2) Получите доступ к веб-сайту Mutillidae и просмотрите веб-страницы, чтобы определить те, которые принимают пользовательский ввод (например, форма входа пользователя, которая принимает имя пользователя и пароль от удаленного пользователя); эти страницы могут быть уязвимы для SQL-инъекций.

3) Затем откройте Kali и из терминала введите следующее (используя соответствующий целевой IP-адрес):
root@kali:~# sqlmap -u 'http://targetip/mutillidae/index.php?page=user- info.php&username=admin&password=&user-info-php-submitbutton=

sqlmap вернет данные, как показано на *рисунке 1.

Наиболее вероятной базой данных для хранения данных приложения, является БД Mutillidae;
поэтому мы проверим все таблицы этой базы данных, используя следующую команду:
root@kali:~# sqlmap -u "http://yourip/mutillidae/index.php?page=user-info.php&username=&password=&user-info-php-submit-button=View+Account+Details" -D mutillidae --tables

Данные, возвращаемые при выполнении этой команды, показаны на *рисунке 2.

📌Читать далее

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥3😁1
🤖12 сервисов искусственного интеллекта, для написания кода.

Mutable AI
Альтернатива Copilot, которая предлагает бесплатную версию со сокращенным функционалом, а стоимость ее платной подписки варьируется от $10 до $25 в месяц. Эта альтернатива также предлагает следующие возможности: автодополнение кода, управление с помощью промптов, рефакторинг кода и автоматическую документацию.

SpellBox
Это AI-помощник для программистов, который можно установить как настольное приложение (для Windows и macOS), так и как плагин для VS Code. Он способен генерировать код в ответ на запросы, объяснять принципы работы программы и сохранять фрагменты кода в закладках.

StarCoder
Это AI-ассистент, который может создавать код на 80 языках, обученный на данных из GitHub. Эта модель похожа на GitHub Copilot, но с открытым исходным кодом и, по мнению разработчиков, она лучше других моделей.

Blackbox AI
BlackboxAI поддерживает более 20 языков программирования, включая Python, Java, C, C++, C#, JavaScript, SQL, PHP, Go, TypeScript, Kotlin, MATLAB, R, Swift, Rust, Ruby, Dart и Scala.

Ghostwriter Chat
Разработчики Replit создали не имеющую себе равных онлайн-IDE, которая основана на искусственном интеллекте. Эта инновационная система способна написать код в соответствии с контекстом проекта и не только дополняет код, написанный программистом, но и помогает отслеживать ошибки.

CodeSquire.ai
Это ИИ-ассистент, который помогает дата-сайентистам, инженерам и аналитикам. Он способен генерировать код в ответ на вопросы, создавать функции различной сложности, преобразовывать вводимые команды в SQL-запросы и детально объяснять, как работает каждый блок кода.

Toolbuilder
Toolbuilder позволяет быстро создавать ИИ-приложения и чат-боты, которые хранятся и запускаются на сайте. Вы можете поделиться ссылками на приложения с друзьями, а для выбора подходящего инструмента есть каталог готовых приложений, например, инструменты для поиска персонализированных подарков, анализа SEO показателей, рекомендации коктейлей и описания товаров. Еще один популярный инструмент - генератор постов для блога. Также вы можете использовать Toolbuilder для описания сюжета фильма с помощью эмодзи и иконок.

Safurai
Это бесплатный инструмент на основе искусственного интеллекта, который можно использовать как плагин для VS Code. Для того чтобы воспользоваться ее возможностями, достаточно выделить фрагмент кода: Safurai объяснит, как он работает, предложит советы по оптимизации и рефакторингу, напишет необходимые тесты и документацию. Будучи обучаемым на коде проекта, он запомнит все заданные вопросы.

Text2SQL
Text2SQL - данный искусственный интеллект создает запросы SQL, регулярные выражения, дизайны баз данных и формулы для Excel и Google Sheets. Присутствует бесплатный тариф, в то время как цены платной подписки варьируются от $2.49 до $4.99 в месяц.

Code Snippets AI
Приложение, использующее технологию GPT-4 для генерации кода. По вопросу о необходимости данного инструмента, разработчики отвечают, что это более экономичный вариант по сравнению с оригинальным ChatGPT Plus, подписка на который стоит $24 в месяц, в то время как подписка на Code Snippets AI обойдется в $10 в месяц.

CodiumAI
CodiumAI - программа для тестирования, использующая TestGPT-1 и GPT-3.5 & 4 для интеллектуального создания тестов и обработки кода, выявления ошибок и багов. В настоящее время этот инструмент работает с кодом Python, JavaScript и TypeScript. Благодаря подключению к VS Code и другим IDE от JetBrains, использование CodiumAI бесплатно.

Metabob
Metabob исправляет ошибки и выявляет уязвимости в коде, а также интегрируется с такими платформами, как VS Code, GitHub, BitBucket и GitLab. Эта программа берет под контроль все самые популярные языки программирования, включая Python, Javascript, Typescript, C++, С и Java, и предоставляет своевременные рекомендации по улучшению кода. B процессе работы Metabob автоматически производит рефакторинг кода разработчиков и искусственный разум.

@sqlhub
👍143🔥3🤬1
🐱 Переход на PgCat — прокси-сервер Postgres следующего поколения

PgCat  — это open source прокси-сервер Postgresql, в развитии которого мы участвуем и который используем на продакшене. Функционал PgCat для кластеров Postgresql: пул соединений, балансировка нагрузки, отработка отказа реплики.

В Instacart мы применяем Postgresql почти для всех задач баз данных: эффективным кешированием, индексированием, оптимизацией запросов и вертикальным масштабированием экземпляров выжимаем из одного экземпляра Postgres немало производительности.

Все это отличные стратегии, но с ними далеко не уедешь.
Не ограничиваясь одним экземпляром за счет добавления реплик чтения или горизонтального сегментирования БД, мы в обоих случаях увеличиваем сложность.

Почему PgCat?

📌 Разбираем подробно

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥21
QueryFlow - это бесплатное веб-приложение, которое отображает время выполнения запросов пользователя к базе данных.

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

#бд #инструменты

@sqlhub
👍143🔥3😁1
🗂Оптимизация работы с большим объемом данных при помощи партиционирования в SQL

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

Партиционирование в SQL

Это техника, которая позволяет разбить таблицу на несколько физических или логических разделов. Каждая такая разделенная часть называется партицией. Партиционирование применяется с целью улучшения производительности и эффективности работы с базой данных.

Как работает партиционирование в SQL

В SQL партиционирование может быть реализовано при помощи различных механизмов. В основе всех этих механизмов лежит принцип разделения таблицы на физические или логические единицы хранения данных. Разделение может основываться на различных критериях, таких как диапазон значений столбца, хеш-значение, список значений и т. д.

Существует два основных варианта партиционирования в SQL — горизонтальное и вертикальное.

Шаги по реализации партиционирования

@sqlhub
👍16🔥43
🖥 [Тестовое Тинькофф] Звонки по дням

Дано
Дана следующая структура таблиц:

Задание
Напишите запрос, который посчитает количество звонков, сделанных между 2020-10-01 и сегодняшним днем. Полученная таблица должна состоять из двух столбцов: date и cnt_calls. В столбце date должен находиться день вызова (без времени), а в столбце "cnt_calls" должно отображаться количество звонков, совершенных в этот день.

Столбцы в результате

date
cnt_calls

Примечание: для корректной работы вашего запроса обязательно указывайте схему таблиц - tinkoff.

Например, FROM tinkoff.employees.

Пишите свое решение в комментариях👇

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍163🔥3🤬1
🤓 Набор обучающих материалов по базам данных

1. Статьи.
2. Блоги.
3. Курсы.
4. Выступления.

5. Книги.

Дает возможность углубленно изучить работу с базами данных.

👇

📌 GitHub

@Sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥41
⚡️Маст-хэв список для программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования.
Лучший способ получать свежие обновлении и следить за трендами в разработке.

Машинное обучение: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
C#: t.me/csharp_ci
C/C++/ t.me/cpluspluc
Data Science: t.me/data_analysis_ml
Devops: t.me/devOPSitsec
Go: t.me/Golang_google
Базы данных: t.me/sqlhub
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Linux: t.me/+A8jY79rcyKJlYWY6
Big Data: t.me/bigdatai
Хакинг: t.me/linuxkalii
Тестирование: https://t.me/+F9jPLmMFqq1kNTMy
Java: t.me/javatg

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy

Папка машинное обучение: https://t.me/addlist/_FjtIq8qMhU0NTYy

📕 Бесплатные Книги для программистов: https://t.me/addlist/YZ0EI8Ya4OJjYzEy

🎞 YouTube канал: https://www.youtube.com/@uproger

😆ИТ-Мемы: t.me/memes_prog

🇬🇧Английский: t.me/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3🥰21
🖥 NoSQL: виды, особенности и применение

NoSQL — это семейство нереляционных баз данных. В них разработчики отошли от использования традиционной табличной модели представления информации.

Уже само название заявляет, что управлять данными можно не только с помощью Structured Query Language (SQL), т. е. языка структурированных запросов.

Модель NoSQL появилась в ответ на необходимость оперативно обрабатывать действительно огромные объёмы данных. Поэтому NoSQL по большей части заточена под масштабирование по горизонтали и работу с недостаточно структурированными или постоянно меняющимися данными.

Почему появилась модель NoSQL
Расцвет реляционных (relation — «связь, взаимосвязь») баз данных пришёлся на 80-е годы, когда в БД в основном хранили текстовые документы и изображения. Однако с развитием технологий и ростом объёма обрабатываемой информации реляционные СУБД перестали справляться со всеми задачами одинаково хорошо. Термин NoSQL впервые прозвучал в 1998 году: его применил итальянский учёный Карло Строцци для описания своей open source СУБД. При разработке он отказался от SQL, а также от основного принципа реляционных СУБД — ACID (atomicity, consistency, isolation, durability).

В начале XXI века NoSQL БД стали популярны, в том числе у корпораций. Чтобы решить проблемы параллельных вычислений с очень большим объёмом информации и масштабируемости, Google построила на основе модели распределённых вычислений MapReduce колоночное хранилище. На базе этих технологий выросло целое семейство высокодоступных open source СУБД.

Основные причины появления NoSQL:

📌 Читать

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍134🔥1
PostgreSQL_Python.pdf
677.1 KB
🔥 Полезная Шпаргалка-гайд по работе с Python и PostgreSQL.


Все от установки и соединение с БД до создания таблиц и работы с полями.

@sqlhub
10👍6🔥4
🖥 Продвинутые темы SQL для дата-инженеров

Дата-инженер контролирует и анализирует большие наборы данных. SQL — мощный инструмент выполнения запросов и манипулирования данными, и для создания эффективных решений здесь имеется немало продвинутых функциональных средств. Рассмотрим ряд важных для дата-инженеров тем SQL, иллюстрируя их примерами применения набора данных.

Пример набора данных
Имеется три таблицы:

product_table с данными различных продуктов — название, цена, категория;
category_table с данными о категориях продуктов;
order_table с данными о заказах: заказанный продукт, его количество, дата заказа.

Вот схема каждой таблицы:
product_table
+----+----------------------+-------+-------------+
| id | Название | Цена | category_id |
+----+----------------------+-------+-------------+
| 1 | iPhone 13 | 1000 | 2 |
| 2 | Galaxy S21 | 800 | 2 |
| 3 | Pixel 6 | 700 | 2 |
| 4 | MacBook Air | 1000 | 4 |
| 5 | Surface Pro 8 | 1200 | 4 |
| 6 | iPad Pro | 800 | 3 |
| 7 | iPad Mini | 400 | 9 |
| 8 | Smart TV | 800 | 1 |
| 9 | Home Theater System | 600 | 1 |
| 10 | Galaxy S21 Ultra | 1400 | 2 |
| 11 | iPhone 13 Pro Max | 1300 | 2 |
| 12 | Pixel 6 Pro | 1000 | 2 |
+----+----------------------+-------+-------------+

category_table
+----+-------------+
| id | Название |
+----+-------------+
| 1 | Электроника |
| 2 | Телефоны |
| 3 | Планшеты |
| 4 | Ноутбуки |
| 5 | Бытовая техника |
| 6 | Одежда |
| 7 | Спорттовары |
| 8 | Игрушки |
| 9 | Аксессуары |
+----+-------------+


order_table
+----+------------+-------------+------------+
| id | product_id | Количество | Дата |
+----+------------+-------------+------------+
| 1 | 1 | 2 | 2022-03-28 |
| 2 | 2 | 1 | 2022-03-28 |
| 3 | 3 | 3 | 2022-03-29 |
| 4 | 4 | 1 | 2022-03-30 |
| 5 | 5 | 2 | 2022-03-31 |
| 6 | 6 | 3 | 2022-03-31 |
| 7 | 7 | 2 | 2022-03-31 |
| 8 | 8 | 1 | 2022-03-31 |
| 9 | 9 | 1 | 2022-03-31 |
+--------------------------------------------+

Фильтрация данных
Предложение WHERE — это важный SQL-функционал для фильтрования данных по конкретным условиям. WHERE, которым определяется условие включения данных в результаты, добавляется в конце оператора SELECT.

Пример. Чтобы получить все продукты дороже 1000 $, применяем WHERE для их фильтрации по цене, в результаты включаются только продукты дороже 1000 $:
SELECT *
FROM product_table
WHERE price > 1000;


Возвращаемый результат:
+----+---------------------+-------+-------------+
| id | Название | Цена | category_id |
+----+---------------------+-------+-------------+
| 5 | Surface Pro 8 | 1200 | 4 |
| 10 | Galaxy S21 Ultra | 1400 | 2 |
| 11 | iPhone 13 Pro Max | 1300 | 2 |
+----+---------------------+-------+-------------+


Объединения
Чтобы иметь полную картину о данных нескольких таблиц, эти таблицы объединяют. Для этого в SQL имеются внутренние, левые, правые и полные внешние объединения.

Пример. Чтобы получить список всех заказов и название заказанного продукта, с помощью объединения в SQL объединяем таблицы: в одной данные о заказе, в другой — о продукте:
SELECT order_table.*, product_table.name
FROM order_table
INNER JOIN product_table ON order_table.product_id = product_table.id;


📌 Читать дальше

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17👎5🔥21
🖥 Аналитика небольших данных: как совместить Excel, Python и SQL с помощью инструментов с открытым исходным кодом

Однажды Джоэл Спольски в своей знаменитой презентации «You Suck at Excel» сказал, что существуют сотни коммерческих продуктов, вместо которых можно было бы использовать табличку Excel.

В этой шутке очень высокая доля правды. Excel благородя интуитивному UI, формулам и VBA дает возможность пользователям самим решать широкий спектр задач, избавляя от необходимости каждый раз обращаться за помощью к разработчикам или внедрять в компании новый продукт. Excel используется везде от мелкой розницы до Fortune 500 и CERN.

Пользовательский интерфейс Excel оказался, настолько удачным – ни один из конкурентов так и отошел от привычных таблиц. Для пользователя Excel интерфейс Google Spreadsheet будет привычным и интуитивно понятным. А вот по своим функциональным возможностям Excel до сих пор превосходит большинство конкурентов.

Как с помощью двух мощных инструментов с открытым исходным кодом можно совместить привычный для пользователей интерфейс, надежность и мощь SQL, гибкость Python и командную работу как в Google Spreadsheet? Давайте рассмотрим это на простом примере.

📌Читать дальше

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥3
🖥 Как удалить сразу все избыточные индексы в каждой базе данных

Избыточные индексы в SQL Server - это явление значительно более общее, чем мне бы хотелось. Я встречал это довольно часто. Это означает, что данное сообщение в блоге все еще будет иметь значительную целевую аудиторию!

Статья Brent Ozar дает исчерпывающую информацию об избыточных/дублирующих индексах, что они означают, почему это плохо, и что нужно с этим делать.

Несколько лет назад Guy Glantser также опубликовал статью об удалении избыточных индексов. Она весьма полезна для нахождения всех избыточных индексов во всех таблицах в заданной базе данных.

Но вот чего не хватает в этих статьях, так это возможности легко генерировать команды Drop/Disable для этих избыточных индексов.

Кроме того, что если имеются "похожие" индексы, которые только "частично" избыточны, и, следовательно, недостаточно просто удалить один из них? Иначе это может негативно сказаться на производительности некоторых запросов.

Есть ли способ учесть все эти проблемы?
Каждый из них? Повсюду? Сразу?


В посте я собираюсь показать вам, как обнаружить, получить подробную информацию и иметь возможность удалить КАЖДЫЙ избыточных индекс ЛЮБОЙ формы и размера:

Полностью дублируемые индексы
Избыточные индексы на основе ключевых столбцов + включенных столбцов
Частично избыточные индексы только на основе ключевых столбцов
Все таблицы
Все таблицы с минимальным числом строк
В конкретной базе данных
Во всех доступных базах данных

📌 Читать дальше
📌 Скрипт
📌 Индексы: обнаружение неиспользуемых индексов

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🔥1
14👍6🔥2
🖥 Postgres, MongoDB и MySQL - три наиболее известные и широко используемые базы данных, причем Postgres является самой популярной.

Redis и Planetscale - лучшие варианты при запуске нового проекта. Более подробная информация и интересные статистические данные приведены в полном тексте отчета.

📌Читать

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍134🔥1
Распределенный SQL: Альтернатива шардированию баз данных

Шардирование баз данных — это процесс разделения данных на более мелкие части, называемые «шарды». Шардинг обычно используется, когда необходимо масштабировать записи. Распределенный SQL представляет новый способ масштабирования реляционных баз данных с использованием стратегии сегментирования, полностью автоматизированной и прозрачной для приложений. Подробнее ты узнаешь из этой статьи.

🚀 Читать статью

@sqlhub
👍64🔥1