Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2
PEP 723
⭐️ Т.е. по сути ты сможешь описать зависимости скрипта в метадате без их установки через pip.
Если(когда) pep будет принят
# /// noscriptЭтот PEP определяет формат метаданных, который может быть встроен в однофайловые скрипты Python для облегчения запуска, IDE и других внешних инструментов, которым может потребоваться взаимодействовать с такими скриптами.
# requires-python = ">=3.11"
# dependencies = [
# "requests<3",
# "rich",
# ]
# ///
import requests
from rich.pretty import pprint
resp = requests.get("https://peps.python.org/api/peps.json")
data = resp.json()
pprint([(k, v["noscript"]) for k, v in data.items()][:10])
Если
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒3❤🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3❤🔥2
Оптимизация подзапросов и агрегаций
Подзапросы и агрегации часто встречаются в SQL-запросах, но могут влиять на производительность. Давай рассмотрим дополнительные методы оптимизации.
Помимо преобразования подзапросов в
JOIN или использования EXISTS, рассмотри следующие советы по оптимизации подзапросов:SELECT могут привести к снижению производительности. Если нужно получить данные из связанных таблиц, используйте вместо этого JOIN.TOP (SQL Server) или LIMIT (MySQL, PostgreSQL, SQLite).Агрегации, такие как
SUM, COUNT, AVG и другие, необходимы, но могут быть ресурсоёмкими. Вот как их оптимизировать:Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
DE
Методы оптимизации SQL-запросов в высоконагруженных приложениях
Успех высоконагруженных приложений зависит от эффективной работы БД, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы…
Успех высоконагруженных приложений зависит от эффективной работы БД, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы…
🆒4❤🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
postgrespro.ru
PostgreSQL : Документация: 18: Документация к PostgreSQL 18.1
❤🔥7
Избегай курсоров и циклов для повышения производительности
Курсоры и циклы следует редко использовать в SQL, поскольку они могут быть медленными и неэффективными, особенно в высоконагруженных приложениях. SQL предназначен для операций на основе множеств, которые, как правило, эффективнее. Вот как свести к минимуму использование курсоров и циклов:
Вместо использования курсоров или циклов для манипулирования данными строка за строкой используй операции на основе множеств, предоставляемые SQL. Например, ты можешь использовать операторы
UPDATE или DELETE с предложениями WHERE для изменения или удаления нескольких строк на основе определённых условий.Если нужно обработать много строк, рассмотри возможность использования пакетной обработки. Разбей операцию на управляемые фрагменты, используя
LIMIT (MySQL, PostgreSQL, SQLite), FETCH FIRST (IBM Db2) или аналогичные выражения. В каждой итерации обрабатывай подмножество строк, снижая нагрузку на ресурсы сервера.Если ты обнаружишь, что циклы необходимы для решения конкретной задачи, постарайся оптимизировать их, используя операции на основе множеств внутри цикла. Минимизируй взаимодействие с БД, получая и манипулируя большими наборами данных на каждой итерации, сокращая количество взаимодействий с базой данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
DE
Методы оптимизации SQL-запросов в высоконагруженных приложениях
Успех высоконагруженных приложений зависит от эффективной работы БД, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы…
Успех высоконагруженных приложений зависит от эффективной работы БД, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы…
🆒4❤🔥1
Заключительный пост цикла.
🙂 Применяя методы, описанные в постах выше, ты сможешь улучшить навыки оптимизации SQL-запросов, особенно когда речь идёт о высоконагруженных приложениях, сложных соединениях и проблемах индексирования.
🙃 Понимание планов выполнения запросов, стратегий индексирования, переписывания запросов, денормализации данных, временных таблиц, оптимизации подзапросов и агрегирования. А также отказа от таких неэффективных методов, как курсоры и циклы, позволит оптимизировать запросы к БД для достижения максимальной производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
DE
Методы оптимизации SQL-запросов в высоконагруженных приложениях
Успех высоконагруженных приложений зависит от эффективной работы БД, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы…
Успех высоконагруженных приложений зависит от эффективной работы БД, лежащих в их основе. По мере роста сложности SQL-запросов, особенно тех, которые включают в себя сложные соединения и проблемы…
🆒3❤🔥1
Команда Postman Open Technologies собирает информацию о стандартах, отраслевых форматах и спецификациях, открытых API.
Каталог практик и паттернов оформлен как рабочее пространство Postman
На текущий момент там описаны следующие паттерны:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3🆒2
IMG_20240315_000134_555.png
971 KB
Шпаргалка по SQL
JOIN, IN, LIKE, BETWEEN, ORDER BY и другое, ботай!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3
📦 PyPI
docker pull apache/airflow:2.8.3#airflow
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3
Использование SELECT *
SELECT * FROM employees;
SELECT employee_id, first_name, last_name FROM employees;Отсутствие индексов
CREATE INDEX idx_last_name ON employees(last_name);
SELECT * FROM employees WHERE last_name = 'Smith';Чрезмерное использование подзапросов
SELECT department_name FROM departments WHERE department_id IN (SELECT department_id FROM employees);
SELECT DISTINCT d.department_name FROM departments d JOIN employees e ON d.department_id = e.department_id;Неэффективные JOIN
SELECT * FROM employees, departments;
SELECT e.employee_name, d.department_name FROM employees eНеиспользование выражений WHERE
INNER JOIN departments d ON e.department_id = d.department_id;
SELECT * FROM orders;
SELECT * FROM orders WHERE order_date >= '2023-01-01';Игнорирование планов выполнения запросов
EXPLAIN SELECT * FROM products WHERE category = 'Electronics';Отсутствие оптимизации больших наборов данных
SELECT * FROM products LIMIT 10 OFFSET 20;Повторяющиеся агрегации
SELECT department, SUM(salary) AS total_salary FROM employees GROUP BY department;
WITH DepartmentSalaries AS (Неадекватная обработка ошибок
SELECT department, SUM(salary) AS total_salary FROM employees GROUP BY department
)
SELECT * FROM DepartmentSalaries;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8
BEGIN;
-- SQL выражение
IF some_condition THEN
ROLLBACK; -- Откат транзакции при ошибке
ELSE
COMMIT; -- Коммит транзакции при успешном выполнении всех выражений
END IF;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4😁2
Временные таблицы в SQL обеспечивают удобный способ разбиения сложных задач на более мелкие и управляемые. Они позволяют разделить этапы обработки данных, что может повысить производительность, улучшить читаемость кода и упростить логику запросов.
CREATE TABLE с ключевым словом TEMPORARY или TEMP перед именем таблицы:CREATE TEMPORARY TABLE my_temp_table (Детали:
id INT,
name VARCHAR(50),
age INT
);
CREATE TEMPORARY TABLE используется для создания временной таблицы.my_temp_table — это имя, которое присваивается временной таблице. Имя можно выбрать любое.my_temp_table имеет три столбца: id типа INT, name типа VARCHAR(50) и age типа INT.Допустим, у тебя есть большой набор данных, и ты хочешь выполнить сложный анализ или вычисления на меньшей части этих данных. Для такого анализа можешь создать временную таблицу, содержащую только необходимые строки и столбцы.
CREATE TEMPORARY TABLE subset_data AS
SELECT column1, column2, column3
FROM original_table
WHERE condition;
SELECT column1, AVG(column2) AS average_value
FROM subset_data
GROUP BY column1;
DROP TABLE subset_data;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5
Временные таблицы могут использоваться для оптимизации сложных или ресурсоемких запросов. Разбив сложный запрос на несколько этапов с помощью временных таблиц, ты можешь повысить производительность запроса.
Такое повышение происходит за счёт уменьшения объема данных, обрабатываемых на каждом этапе, или за счёт предварительного вычисления промежуточных результатов.
Временные таблицы позволяют хранить и повторно использовать промежуточные результаты запроса, избегая лишних вычислений. Пример:
CREATE TEMPORARY TABLE temp_results AS
SELECT column1, COUNT(*) AS count_value
FROM large_table
WHERE condition1
GROUP BY column1;
SELECT column1, column2
FROM temp_results
WHERE count_value > 10
ORDER BY column1;
DROP TABLE temp_results;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3
Временные таблицы также полезны для подготовки и преобразования данных перед их загрузкой в постоянные таблицы.
Ты можешь создать временную таблицу, импортировать данные из различных источников, очистить их, применить преобразования и проверить данные перед их вставкой в конечный пункт назначения.
Временные таблицы обеспечивают гибкий и эффективный способ обработки и манипуляцией данными без изменения исходного набора. Пример:
CREATE TEMPORARY TABLE staging_table (
id INT,
name VARCHAR(50),
quantity INT
);
INSERT INTO staging_table (id, name, quantity)
SELECT id, UPPER(name), quantity * 2
FROM external_source;
UPDATE staging_table
SET quantity = 0
WHERE quantity < 0;
INSERT INTO final_table (id, name, quantity)
SELECT id, name, quantity
FROM staging_table;
DROP TABLE staging_table;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3