Задавайте вопросы, мы ответим
Вы не зашли.
В продолжение вот этой темы получился вот такой запрос. Точнее два: один для извлечения позиций выбранной страницы, второй - для получения кол-ва страниц. При 3000 записей выполняется на среднем хостинге порядка 25 секунд, что очень и очень долго. Можно ли как-то ускорить обработку?
SELECT *, IF (Currency='1', Price * 1, IF (Currency='2', Price * 34.81, Price * 25.84)) as Price FROM mytable WHERE Active='1' AND Approved='1' AND Folder='2' AND ID IN (SELECT CustomFormValueAdvID FROM CustomFormValue WHERE (CustomFormValueName='cf5' AND CustomFormValueValue LIKE '%;1;%2;%3;%4;%')) AND ID IN (SELECT CustomFormValueAdvID FROM CustomFormValue WHERE (CustomFormValueName='cf6' AND CustomFormValueValue='1')) AND Time >= '955917166' AND (((Price BETWEEN 0 AND 4294967295) AND Currency='1') OR ((Price BETWEEN 0 AND 4294967295) AND Currency='2') OR ((Price BETWEEN 0 AND 4294967295) AND Currency='3')) ORDER BY Special DESC, Selected DESC, Price asc LIMIT 0,30 SELECT count(ID) FROM mytable AS rows_number WHERE Active='1' AND Approved='1' AND Folder='2' AND ID IN (SELECT CustomFormValueAdvID FROM CustomFormValue WHERE (CustomFormValueName='cf5' AND CustomFormValueValue LIKE '%;1;%2;%3;%4;%')) AND ID IN (SELECT CustomFormValueAdvID FROM CustomFormValue WHERE (CustomFormValueName='cf6' AND CustomFormValueValue='1')) AND Time >= '955917166' AND (((Price BETWEEN 0 AND 4294967295) AND Currency='1') OR ((Price BETWEEN 0 AND 4294967295) AND Currency='2') OR ((Price BETWEEN 0 AND 4294967295) AND Currency='3'))
Готов дать разъяснения, если потребуется, что есть что.
Неактивен
Приведите пожалуйста структуру таблицы (SHOW CREATE TABLE) и результат EXPLAIN на указанные запросы
Неактивен