- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 
                        SELECT SQL_CALC_FOUND_ROWS 
`TLogindetails`.`name` AS `username`, `TLogindetails`.`firstname` AS `userfirstname`, `TOrders`.*, 
`author`.`firstname` as `author_firstname`, `author`.`name` as `author_name`, `author`.`secondname` as `author_secondname`, `author`.`in_fio` as `author_in_fio`
FROM `TOrders`
LEFT JOIN `TLogindetails` ON `TOrders`.`user` = `TLogindetails`.`user`
LEFT JOIN `TLogindetails` as `author` ON `author`.`user` = `TOrders`.`author`
WHERE  `TOrders`.`time` >= '1001322000' AND  `TOrders`.`time` <= '1401872400' 
AND ( 
IF(`TOrders`.`author` = 0,
`TLogindetails`.`name` LIKE '%Иванов%' OR `TLogindetails`.`firstname` LIKE '%Иванов%' OR `TLogindetails`.`secondname` LIKE '%Иванов%' OR `TLogindetails`.`in_fio` LIKE '%Иванов%', 
`author`.`name` LIKE '%Иванов%' OR `author`.`firstname` LIKE '%Иванов%' OR `author`.`secondname` LIKE '%Иванов%' OR `author`.`in_fio` LIKE '%Иванов%'
)  OR  IF(`TOrders`.`author` = 0,
	`TLogindetails`.`name` LIKE '%Иван%' OR `TLogindetails`.`firstname` LIKE '%Иван%' OR `TLogindetails`.`secondname` LIKE '%Иван%' OR `TLogindetails`.`in_fio` LIKE '%Иван%', 
	`author`.`name` LIKE '%Иван%' OR `author`.`firstname` LIKE '%Иван%' OR `author`.`secondname` LIKE '%Иван%' OR `author`.`in_fio` LIKE '%Иван%'
	)  OR  IF(`TOrders`.`author` = 0,
		`TLogindetails`.`name` LIKE '%Иванович%' OR `TLogindetails`.`firstname` LIKE '%Иванович%' OR `TLogindetails`.`secondname` LIKE '%Иванович%' OR `TLogindetails`.`in_fio` LIKE '%Иванович%', 
		`author`.`name` LIKE '%Иванович%' OR `author`.`firstname` LIKE '%Иванович%' OR `author`.`secondname` LIKE '%Иванович%' OR `author`.`in_fio` LIKE '%Иванович%'
		) 
	)  
AND ( `TLogindetails`.`name` LIKE '%Тестовый%' OR `TLogindetails`.`firstname` LIKE '%Тестовый%' OR `TLogindetails`.`secondname` LIKE '%Тестовый%' 
OR `TLogindetails`.`in_fio` LIKE '%Тестовый%'  OR  `TLogindetails`.`name` LIKE '%физ%' OR `TLogindetails`.`firstname` LIKE '%физ%' OR `TLogindetails`.`secondname` LIKE '%физ%' 
OR `TLogindetails`.`in_fio` LIKE '%физ%'  OR  `TLogindetails`.`name` LIKE '%лицо%' OR `TLogindetails`.`firstname` LIKE '%лицо%' OR `TLogindetails`.`secondname` LIKE '%лицо%' 
OR `TLogindetails`.`in_fio` LIKE '%лицо%' )  
AND  `TOrders`.`paid` >= `TOrders`.`summ` AND  `TOrders`.`status` = 10 
ORDER BY `time` DESC
LIMIT 0, 20
                                 
        
            Получаем первые 20 строк заказов, выбираем пользователя, оформившего заказ и если есть менеджера закрепленного за этим заказом плюс фильтр по поиску по дате, заказчику, менеджеру, номеру заказа и статусу заказа.
        
        
> LIKE...OR....LIKE...OR...LIKE...OR...LIK E
Фу-фу-фу.
А потом рассказывают, что запросы тормозят и единственное спасение - какой-нибудь сторонний фулл-текст сирёч движок.
Одного like '%das%' вполне достаточно для лагов ;) А остальная пачка должна довольно шустро отработать - запись же уже в памяти.
Каждый LIKE через OR - это новый фул-тейбл скан ;)
Хотя, СУБД может и заоптимайзит всё в один скан. Но приятного мало.
в этом треде не хватает пруфов с explain plan
А вот разбивать фуллскан на несколько - что-то сомнительно... хотя всякое бывает.