|
|
|
| Всем привет! Нужно оптимизировать такой запрос:
SELECT table1.*, table2.*, table3.* FROM TBName1 table1, TBName2 table2, TBName3 table3 WHERE table2.qw!='' && table2.er=table1.er && table2.er=table3.er && table1.us!='5' && table3.ad='1' && table1.w='1' && table2.w='1' && table3.w='1' ORDER BY RAND() LIMIT 1
|
ORDER BY RAND() нужен только для TBName2, если это поможет для оптимизации. | |
|
|
|
|
|
|
|
для: danya_nyjniy
(30.06.2012 в 17:46)
| | А сколько он выполняется по времени? Как выглядит для него EXPLAIN? | |
|
|
|
|
|
|
|
для: cheops
(30.06.2012 в 17:50)
| | Не знаю, но вроде как долго. Щас попробую узнать. | |
|
|
|
|
|
|
|
для: cheops
(30.06.2012 в 17:50)
| | Узнал. Время выполнения: 2.6966 сек. | |
|
|
|
|
|
|
|
для: cheops
(30.06.2012 в 17:50)
| | EXPLAIN:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE table3 ALL NULL NULL NULL NULL 291 Using where; Using temporary; Using filesort
1 SIMPLE table1 ALL NULL NULL NULL NULL 3359 Using where
1 SIMPLE table2 eq_ref PRIMARY PRIMARY 8 gb.table1.er 1 Using where | |
|
|
|
|
|
|
|
для: danya_nyjniy
(30.06.2012 в 17:46)
| | Можно конечно оптимизировать выбором только нужных столбцов, но мне кажется он станет не на много быстрее. | |
|
|
|