Indexes may not be of much use in this instance because of the presence of WHERE conditions such as
when col1name like '%new%' then "newvalue". If the query must find col1names that have the string "new" embedded somewhere within, then it has no choice but to look through every row that otherwise qualifies.
If your requirement was to find only those that begin with the word new (which means your where ckayse would be when col1name like 'new%' then "newvalue") that can use an index. Is it possible that your business needs can allow restricting the query to such cases?