Теоретически, если существует индекс для (Col1, Col2, Col3), запрос, который ищет (Col1, Col2, Col4), должен иметь возможность искать индекс для Col1 и Col2. Я ожидал бы, что механизм базы данных затем вернет все соответствующие строки на другой шаг, который фильтрует результирующие строки в Col4.
На практике фактическая реализация будет зависеть от механизма базы данных. Это может быть запрос, пропускающий использование индекса полностью и сканирующий таблицу, если стоимость сканирования таблицы намного меньше, чем поиск по индексу. Если оптимизатор запросов знает, что Col1 очень уникален, оптимизатор запросов может использовать Col1 в качестве единственного предиката поиска и использовать другой шаг в плане запроса для фильтрации совпадающих строк по Col2 и Col4.