Базы данных и всё, что с ними связано!
Сотрудничество: @haarrp
РКН № 6766085482
Post #1241
3.09K
Отменяем все мемы про дроп базы
- 😁 14
- 👍 8
- ❤ 4
- 🔥 2
- ⚡ 1
SQ @databases_tg
Showing posts older than #1242 · Back to latest
установить зависимости
pip install transformers accelerate torch sentencepiece
# пример запуска DeepSeek из Python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "deepseek-ai/deepseek-coder-6.7b-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto" # если есть GPU — модель сама её использует
)
prompt = "Напиши на Python функцию, которая проверяет, простое ли число."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=160,
temperature=0.4
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

пример «правильного» запроса к ИИ с реальными данными
-- запрос
SELECT *
FROM orders o
JOIN customers c ON c.id = o.customer_id
WHERE o.created_at > NOW() - INTERVAL '30 days'
AND c.country = 'US'
ORDER BY o.created_at DESC
LIMIT 100;
-- план выполнения
EXPLAIN ANALYZE
SELECT ...
-- (сюда вставь полный план: Seq Scan / Index Scan / сортировки и т.п.)
-- схема таблиц (важно!)
\d orders
\d customers
-- вопрос ИИ:
"Разбери план выполнения.
Где узкие места?
Нужны ли индексы и какие именно?
Можно ли переписать запрос быстрее, не меняя логику?"
SELECT
id,
created_at,
total_amount
FROM orders
WHERE user_id = 123
AND status = 'paid'
ORDER BY created_at DESC
LIMIT 20;
CREATE INDEX idx_orders_user ON orders (user_id);
CREATE INDEX idx_orders_status ON orders (status);
CREATE INDEX idx_orders_created ON orders (created_at);
CREATE INDEX idx_orders_user_status_created_at
ON orders (user_id, status, created_at DESC)
INCLUDE (total_amount);
user_id, status - фильтруют строки
created_at DESC - сразу даёт нужный порядок для ORDER BY ... DESC
INCLUDE (total_amount) - позволяет взять сумму прямо из индекса








SELECT DISTINCT ON (user_id)
user_id,
session_id,
created_at
FROM user_sessions
ORDER BY user_id, created_at DESC;
CREATE INDEX idx_user_sessions_distinct
ON user_sessions (user_id, created_at DESC);
SELECT COUNT(*) FROM orders WHERE user_id = 42;
SELECT 1 FROM orders WHERE user_id = 42 LIMIT 1;
Почему:
- `COUNT(*)` считает все строки
- `EXISTS` / `LIMIT 1` останавливаются на первом совпадении
- На больших таблицах разница — кратная
Лучший вариант:
SELECT EXISTS (
SELECT 1 FROM orders WHERE user_id = 42
);

