Здравствуйте, коллеги!
Есть база которая несколько раз в сутки переписывается целиком (частями)
После каждого изменения (допустим удалил 2.000.000 и добавил 1.500.000) полностью перебираю всю базу.
Запрос выглядит так:
select
tp.manufacturer,
tp.manufacturer_number,
(
select
cost
from
b_price as tp1
where
tp1.search = tp.search and
tp1.manufacturer = tp.manufacturer
order by tp1.cost asc
limit 1
) as p1,
(
select
cost
from
b_price as tp1
where
tp1.search = tp.search and
tp1.manufacturer = tp.manufacturer
order by tp1.cost asc
limit 1, 1
) as p2
from
b_price as tp
group by tp.search
limit 0, 10000;
search, manufacturer - это индексы
Запрос limit 0, 10000 - занимает 1-3 секунды. А запрос limit 1000000, 10000 занимает около 4-х минут. И каждое последующее обращение занимает больше время чем предыдущее.
Count best: Start:0 Count:5975901 Limit: 10000 Time:1 [OK]
Count best: Start:10000 Count:5975901 Limit: 10000 Time:3 [OK]
Count best: Start:20000 Count:5975901 Limit: 10000 Time:3 [OK]
Count best: Start:30000 Count:5975901 Limit: 10000 Time:5 [OK]
Count best: Start:40000 Count:5975901 Limit: 10000 Time:8 [OK]
Count best: Start:50000 Count:5975901 Limit: 10000 Time:10 [OK]
Count best: Start:60000 Count:5975901 Limit: 10000 Time:11 [OK]
Count best: Start:70000 Count:5975901 Limit: 10000 Time:12 [OK]
Count best: Start:80000 Count:5975901 Limit: 10000 Time:14 [OK]
Count best: Start:90000 Count:5975901 Limit: 10000 Time:14 [OK]
Count best: Start:100000 Count:5975901 Limit: 10000 Time:16 [OK]
Если кто-то знает в чем беда, подскажите пожалуйста.
Если что-то нужно в конфиге сервера поправить, поправлю...
Благодарю всех за внимание, и надеюсь на понимание.
|