I
IT'S DATA
@it_s_data172 подп.
379просмотров
17 мая 2024 г.
question📷 ФотоScore: 417
Почему не стоит злоупотреблять приведением типов в SQL запросах? #sql Наверняка любой, кто работал с sql, пользовался приведением типов и писал запросы вида: SELECT sale_id WHERE sale_time::DATE = '2024-01-01' В чем проблема такого приведения поля sale_time (datetime) к типу date? Если это поле sale_time является в таблице индексом (благодаря индексу поиск по значениям столбца происходит очень быстро), а обычно на подобные поля и делают индекс, то делая такое приведение вы лишаетесь преимущества фильтрации запроса по индексу, в плане запроса будет полное сканирование таблицы т.к. планировщик уже не сможет задействовать индекс. В зависимости от объема данных в таблице, делая такие приведение, вы можете замедлить запрос очень сильно, на порядки. Вместо этого можно использовать следующее условие, и всё будет отлично: SELECT sale_id WHERE sale_time >= '2024-01-01' AND sale_time < '2024-01-02' Также частая ситуация это приведение текста к int (целое число) и наоборот, например, когда в разных таблицах один и тот же идентификатор хранится с разным типом, но вам нужно соединить эти таблицы. Тут вам в любом случае придется использовать приведение, но выбирайте с умом в какой именно таблице его делать - в зависимости от индексов и объема данных в этих таблицах. ➖➖➖➖➖ А на изображении к посту просто немного истории SQL, кому интересно. Важно, это история стандартизации: так, например, до стандарта SQL-92, еще с 1970-х, многие реализации SQL уже поддерживали джойны, но их синтаксис и функциональность могли несколько различаться между различными СУБД. SQL-92 же стандартизировал синтаксис джойнов, что обеспечило большую совместимость и унифицированность между различными СУБД ✍️
379
просмотров
1740
символов
Нет
эмодзи
Да
медиа

Другие посты @it_s_data

Все посты канала →
Почему не стоит злоупотреблять приведением типов в SQL запро — @it_s_data | PostSniper