валите часть... есть же скорее всего какая то и другая область пересечения множества нужного вам и множества которое 100% в себе содержит нужные данные при этом она не все 100% записейпроскакивала мысль.. шибко много записей валить в темп надо будет. Неоправдано
CREATE TABLE `prices_clone` (
`id` bigint(5) unsigned NOT NULL auto_increment,
`code` varchar(16) NOT NULL,
PRIMARY KEY (`id`),
KEY `code` (code(5))
)
SELECT max(id) FROM `prices_clone`;
INSERT INTO `prices_clone` SELECT `prices`.id, `prices`.code FROM `prices` WHERE `prices`.id > (значение из первого запроса);
SELECT * FROM (
(SELECT terminators.id, terminators.name, code, price, increment, activation_time
FROM config.prices
JOIN config.pricelists ON pricelists.id = prices.pricelist_id
JOIN config.billing_packs ON billing_packs.id = pricelists.billing_pack_id
JOIN config.terminators ON terminators.billing_pack_id = billing_packs.id
WHERE pricelists.id =
(
SELECT id
FROM pricelists
WHERE billing_pack_id = billing_packs.id
AND activation_time <= NOW( )
ORDER BY id DESC
LIMIT 1
)
AND prices.code = '380445'
AND prices.enabled = 'y')
UNION
(SELECT terminators.id, terminators.name, code, price, increment, activation_time
FROM config.prices
JOIN config.pricelists ON pricelists.id = prices.pricelist_id
JOIN config.billing_packs ON billing_packs.id = pricelists.billing_pack_id
JOIN config.terminators ON terminators.billing_pack_id = billing_packs.id
WHERE pricelists.id =
(
SELECT id
FROM pricelists
WHERE billing_pack_id = billing_packs.id
AND activation_time <= NOW( )
ORDER BY id DESC
LIMIT 1
)
AND prices.code = '38044'
AND prices.enabled = 'y')
UNION
(SELECT terminators.id, terminators.name, code, price, increment, activation_time
FROM config.prices
JOIN config.pricelists ON pricelists.id = prices.pricelist_id
JOIN config.billing_packs ON billing_packs.id = pricelists.billing_pack_id
JOIN config.terminators ON terminators.billing_pack_id = billing_packs.id
WHERE pricelists.id =
(
SELECT id
FROM pricelists
WHERE billing_pack_id = billing_packs.id
AND activation_time <= NOW( )
ORDER BY id DESC
LIMIT 1
)
AND prices.code = '3804'
AND prices.enabled = 'y')
UNION
(SELECT terminators.id, terminators.name, code, price, increment, activation_time
FROM config.prices
JOIN config.pricelists ON pricelists.id = prices.pricelist_id
JOIN config.billing_packs ON billing_packs.id = pricelists.billing_pack_id
JOIN config.terminators ON terminators.billing_pack_id = billing_packs.id
WHERE pricelists.id =
(
SELECT id
FROM pricelists
WHERE billing_pack_id = billing_packs.id
AND activation_time <= NOW( )
ORDER BY id DESC
LIMIT 1
)
AND prices.code = '380'
AND prices.enabled = 'y')
UNION
(SELECT terminators.id, terminators.name, code, price, increment, activation_time
FROM config.prices
JOIN config.pricelists ON pricelists.id = prices.pricelist_id
JOIN config.billing_packs ON billing_packs.id = pricelists.billing_pack_id
JOIN config.terminators ON terminators.billing_pack_id = billing_packs.id
WHERE pricelists.id =
(
SELECT id
FROM pricelists
WHERE billing_pack_id = billing_packs.id
AND activation_time <= NOW( )
ORDER BY id DESC
LIMIT 1
)
AND prices.code = '38'
AND prices.enabled = 'y')
UNION
(SELECT terminators.id, terminators.name, code, price, increment, activation_time
FROM config.prices
JOIN config.pricelists ON pricelists.id = prices.pricelist_id
JOIN config.billing_packs ON billing_packs.id = pricelists.billing_pack_id
JOIN config.terminators ON terminators.billing_pack_id = billing_packs.id
WHERE pricelists.id =
(
SELECT id
FROM pricelists
WHERE billing_pack_id = billing_packs.id
AND activation_time <= NOW( )
ORDER BY id DESC
LIMIT 1
)
AND prices.code = '3'
AND prices.enabled = 'y')
) as temp
GROUP BY terminators.id
ORDER BY price ASC
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 73 Using temporary; Using filesort
2 DERIVED terminators ALL billing_pack_id NULL NULL NULL 73
2 DERIVED billing_packs eq_ref PRIMARY PRIMARY 2 config.terminators.billing_pack_id 1 Using where; Using index
2 DERIVED pricelists eq_ref PRIMARY PRIMARY 2 func 1 Using where
2 DERIVED prices ref pricelist_id pricelist_id 55 config.pricelists.id 1 Using where
3 DEPENDENT SUBQUERY pricelists index NULL PRIMARY 2 NULL 436 Using where
4 UNION terminators ALL billing_pack_id NULL NULL NULL 73
4 UNION billing_packs eq_ref PRIMARY PRIMARY 2 config.terminators.billing_pack_id 1 Using where; Using index
4 UNION pricelists eq_ref PRIMARY PRIMARY 2 func 1 Using where
4 UNION prices ref pricelist_id pricelist_id 55 config.pricelists.id 1 Using where
5 DEPENDENT SUBQUERY pricelists index NULL PRIMARY 2 NULL 436 Using where
6 UNION terminators ALL billing_pack_id NULL NULL NULL 73
6 UNION billing_packs eq_ref PRIMARY PRIMARY 2 config.terminators.billing_pack_id 1 Using where; Using index
6 UNION pricelists eq_ref PRIMARY PRIMARY 2 func 1 Using where
6 UNION prices ref pricelist_id pricelist_id 55 config.pricelists.id 1 Using where
7 DEPENDENT SUBQUERY pricelists index NULL PRIMARY 2 NULL 436 Using where
8 UNION terminators ALL billing_pack_id NULL NULL NULL 73
8 UNION billing_packs eq_ref PRIMARY PRIMARY 2 config.terminators.billing_pack_id 1 Using where; Using index
8 UNION pricelists eq_ref PRIMARY PRIMARY 2 func 1 Using where
8 UNION prices ref pricelist_id pricelist_id 55 config.pricelists.id 1 Using where
9 DEPENDENT SUBQUERY pricelists index NULL PRIMARY 2 NULL 436 Using where
10 UNION terminators ALL billing_pack_id NULL NULL NULL 73
10 UNION billing_packs eq_ref PRIMARY PRIMARY 2 config.terminators.billing_pack_id 1 Using where; Using index
10 UNION pricelists eq_ref PRIMARY PRIMARY 2 func 1 Using where
10 UNION prices ref pricelist_id pricelist_id 55 config.pricelists.id 1 Using where
11 DEPENDENT SUBQUERY pricelists index NULL PRIMARY 2 NULL 436 Using where
12 UNION terminators ALL billing_pack_id NULL NULL NULL 73
12 UNION billing_packs eq_ref PRIMARY PRIMARY 2 config.terminators.billing_pack_id 1 Using where; Using index
12 UNION pricelists eq_ref PRIMARY PRIMARY 2 func 1 Using where
12 UNION prices ref pricelist_id pricelist_id 55 config.pricelists.id 1 Using where
13 DEPENDENT SUBQUERY pricelists index NULL PRIMARY 2 NULL 436 Using where
NULL UNION RESULT <union2,4,6,8,10,12> ALL NULL NULL NULL NULL NULL
а разве нельзя тупо сцепитьAND prices.code = '380445'
AND prices.enabled = 'y')
(prices.code = '380445' AND prices.enabled = 'y' OR prices.code = '380446') AND prices.enabled = 'y'
ну или
prices.code IN (1,2,3) AND prices.enabled = 'y'