How do you optimize query performance in Snowflake, and what role does micro-partitioning play in execution speed?