Тупит SELECT * FROM

Статус
В этой теме нельзя размещать новые ответы.

goodvin

Человек-Волшебник
Регистрация
27 Июн 2006
Сообщения
667
Реакции
694
Query_time: 1.160518 Lock_time: 0.000049 Rows_sent: 20 Rows_examined: 182018
use board;
SET timestamp=1275468732;
SELECT * FROM board ORDER BY ad_date desc LIMIT 61829,20;
Сервер


SQL висит на SAS
Больше никто не грузит сервак.

Таблица:


Подскажите что не так, висел на ВПС данный запрос был 4-20 сек.

ВПС проц 1000 г и память 1000 мб
 
попробуй вместо полной выборки * указать конкретно те поля, которые тебе нужны. а можно просто разбить запрос на составной:

Код:
select * from (SELECT * FROM board ORDER BY ad_date desc) LIMIT 61829,20;

прежде чем написать что это одно и тоже что и твой запрос, попробуй выполнить.
 
Ответ MySQL:
#1248 - Every derived table must have its own alias

на локале этот выполняется 3 сек. а обычный 0.1
 
а что показывает explain ?
для mysql выполни
explain SELECT * FROM board ORDER BY ad_date desc LIMIT 61829,20;
explain select * from (SELECT * FROM board ORDER BY ad_date desc) LIMIT 61829,20;
 
explain SELECT * FROM board ORDER BY ad_date desc LIMIT 61829,20;

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE board ALL NULL NULL NULL NULL 121046 Using filesort

я так понимаю индексы тут не юзат
 
да не используется.
попробуй заставить
SELECT * FROM board force index (ad_date) ORDER BY ad_date desc LIMIT 61829,20;
и заодно проверь индексы
show CREATE TABLE `board`
 
Если форсировать, еще медленее работает

Вроде все понял, нету индекса, тк. я базу токо перенес, и эти строки еще не проиндексированы.
Может я и не прав...

ша поудаляю индексы которые не юзаю, и посмотрю как че...
 
SELECT * FROM board ORDER BY ad_date desc LIMIT 61829,20;
Тебе нужно всего лиш 20 записей, нафига тебе пересортировывать всю таблицу c 61 тыс. записей?
Сделай дополнительное условие по дате ad_date (или лучше по первичному ключу ad_id, если возможно).
Приблезительно так
SELECT * FROM board WHERE (ad_date > какое то timestamp значение ) ORDER BY ad_date desc LIMIT 0,20;
 
все очень банально скул смонтирован был на обычный системный винт 7200 а не на SAS 15000
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху