On 2020-05-14 16:32:41 +0400, otar shavadze wrote: > also nor index drop is an option, because I need re-create index as I use this > table in procedure, so index is necessary for further queries. So total > runtime will not decreased. A full index on a column where all the values are the same (NULL in this case) is useless. For querys which check for the existing value, the optimizer will notice that a full table scan is faster. For query which use any other value, you expect 0 results: So all the optimizer want to know is that the value is indeed not in the column so that it can skip the table entirely. You can do that with a partial index (WHERE col IS NOT NULL) or maybe even a constraint. So I would drop the full index, update the table and then create a partial index. hp -- _ | Peter J. Holzer | Story must make more sense than reality. |_|_) | | | | | hjp@xxxxxx | -- Charles Stross, "Creative writing __/ | http://www.hjp.at/ | challenge!"
Attachment:
signature.asc
Description: PGP signature