MySQL queries taking very long/not finishing
Few points here:


"Cartesian product" is not simple :)
In your specific query, and based on the index you have, the time will highly depend on the distribution of the data. Try this query: SELECT COUNT(*) FROM table WHERE column2=''; I guess the result is not a small number.
UNIQUE entry (column2, column3, column4, column5); is not healthy. The index is very big. It affects both, reads and writes. 'Reads' because it has to be loaded into the memory when it is used, and 'Writes' because it has to be checked (and maybe updated) whenever a DML operation is executed. If this uniqueness is a must, I suggest adding an MD5 hash for all the fields, and have that field uniquely indexed.   
To get smaller result, avoiding repetition, you may add WHERE... AND a.column1&lt;b.column1. This will avoid you having:

1, 4
4, 1