Как стать автором
Обновить

Мифы SQL

Время на прочтение2 мин
Количество просмотров5.8K
Многие разработчики с немалым опытом разработки на любых императивных языках свято верят в то что SQL это тоже самое. Только синтаксис другой. После написания нескольких запросов для вытаскивания данных в свой сервер приложений начинают рождаться мифы о БД.


У меня примеры написаны и проверенны для Оракла, просто он мне ближе.
Но тоже самое действительно для любой СУБД.

UPD: Просили добавить описание что и почему. Добавил.

1. Магический параметр где-нибудь глубоко в конфигах сервера fast = true.
2. Скорость работы запроса оценивается по тому как быстро вывелись первые 20 строк.
3. Можно взять и оптимизировать любой отдельный запрос, или даже часть запроса не трогая ничего кроме него.
4. Понять как работает запрос и улучшить его можно просто посмотрев на код запроса.
5. Во временных таблицах не надо делать ни Primary Key, ни индексов.
6. Внешний ключ = Индекс по полю в дочерней таблице
7. Запрос с меньшей стоимостью обязан работать быстрее.
8. Абсолютная идентичность следующих вариантов кода.

declare
 summ number(10);
 i number(10);
 cursor c is select a from test_pk;
begin
 summ := 0;
 open c;
 
 loop
  fetch c into i;
  exit when c%notfound;

  summ := summ + i;
 end loop;
 
 close c;
 
 dbms_output.put_line(summ);
 
end;


и

select SUM(a) from table1


Основное объяснение ведь и там и там просто суммируем, какая разница как именно это делается.

9. Любое обращение по индексу лучше чем без него.
9а. И связанное с этим Запрос работает медленно, надо добавить индекс.
В запросе Full Table Scan по 100 записям, из которых надо 95 и рядом Full Index Scan по миллиону записей из которых надо тоже 95. Все будут 'оптимизировать' Full Table Scan
10. Скорость соединения таблиц сильно зависит от типов и количества полей по которым мы их соединяем.
10а. Скорость напрямую зависит от количества таблиц участвующих в запросе.
11. В запросах вида

SELECT *
FROM table t
Where t.a = 123
AND t.b = 321


Всегда будут работать два отдельных индекса по полям а и b.

Теги:
Хабы:
Всего голосов 52: ↑24 и ↓28-4
Комментарии39

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн