нашёл в документации, там есть лишь указание, что это образует собой "логические группы".
Вот эти выражения со смысловой точки зрения эквивалентны:
SELECT * FROM users WHERE (id = 1 OR name = 'boo')
SELECT * FROM users WHERE (id = 1) OR (name = 'boo')
но есть ли случаи, когда всё, что идёт после WHERE взятое в скобки будет влиять на перформанс или на результат запроса?
А какое "учение" Вам нужно? Круглые скобки в основном работают обычным для языков программирования образом, т.е. меняют порядок вычисления выражений. Есть, конечно, крайние случаи (когда скобки семантически значимы), но к WHERE они, на первый взгляд, не относятся. Т.е. влиять на результат или производительность "лишние" скобки в WHERE не должны.
Я не уверен, что происходит на partial index. Раньше в доках было "индексное выражение должно точно соответствовать выражению в запросе" и интересно узнать насколько им можно различаться.
По-моему, на самом деле такого ограничения никогда не было. Суть "индексное выражение должно точно соответствовать выражению в запросе" в том, что при планировании запроса должна получаться точно такая restriction clause — в смысле операторов, типов данных и т.п. Т.е. сколько вокруг неё скобок, переставлены ли местами подвыражения и т.п. не имеет значения... но попробуйте ясно напишите это в документации — мне кажется, решили перестраховаться.
вроде где то писалось как постгресс выполняет запрос, что после парсинга он нормализует запрос(разворачивает всякий синтаксический сахар за одно), видимо про точное соответствие писалось с мыслью что про нормализацию еще помнят
Обсуждают сегодня