I was told the SQL functions UPPER() and LOWER() are slow since indexes can't be used with them. No experience in using them whatsoever.
The example was
SELECT lname FROM Users WHERE UPPER(lname) LIKE UPPER('%Foo%')
The original post included another solution for using case-insensitive string comparisons: for each column used for (case-insensitive) search, create another column which includes only upper case strings and create an index for the new column.
Also, for the search column to be more effective, you could only insert data which has no special characters in it in the search column. The special characters must be stripped from the queries as well. That way names like "O'brien" are easily found using a search term such as "obrien", "o'brien" or "O'brien".
If anyone has a better idea, I'm very much open for it.