שלום וברכה
במשך לאשכול: Having OR Where
השאלה הגדולה שלי אם יש סיכוי ששאילתות כאלו יפעלו בשקט גם על מיליוני שורות בלי להציק מידי, או שחובה לחשוב על כיוון אחר?
SELECT
(
SELECT
`meta_records`.`VALUE`
FROM
`meta_records`
WHERE
`meta_records`.`record_id` = `records`.`id`
and `meta_records`.`field_id` = 16
) AS `__column_16`,
(
SELECT
`meta_records`.`VALUE`
FROM
`meta_records`
WHERE
`meta_records`.`record_id` = `records`.`id`
and `meta_records`.`field_id` = 17
) AS `__column_17`,
(
SELECT
`meta_records`.`VALUE`
FROM
`meta_records`
WHERE
`meta_records`.`record_id` = `records`.`id`
and `meta_records`.`field_id` = 21
) AS `__column_21`,
(
SELECT
`meta_records`.`VALUE`
FROM
`meta_records`
WHERE
`meta_records`.`record_id` = `records`.`id`
and `meta_records`.`field_id` = 22
) AS `__column_22`,
(
SELECT
`meta_records`.`VALUE`
FROM
`meta_records`
WHERE
`meta_records`.`record_id` = `records`.`id`
and `meta_records`.`field_id` = 21
) - (
SELECT
`meta_records`.`VALUE`
FROM
`meta_records`
WHERE
`meta_records`.`record_id` = `records`.`id`
and `meta_records`.`field_id` = 22
) AS `__column_25`,
(
SELECT
`meta_records`.`VALUE`
FROM
`records` AS `records100`
INNER JOIN `meta_records` AS `data0` ON `data0`.`VALUE` = `records100`.`id`
LEFT JOIN `meta_records` ON `meta_records`.`record_id` = `records100`.`id`
and `meta_records`.`field_id` = 8
WHERE
`data0`.`record_id` = `records`.`id`
and `data0`.`field_id` = '18'
) AS `__column_18`,
(
SELECT
`meta_records`.`VALUE`
FROM
`records` AS `records100`
INNER JOIN `meta_records` AS `data0` ON `data0`.`VALUE` = `records100`.`id`
LEFT JOIN `meta_records` ON `meta_records`.`record_id` = `records100`.`id`
and `meta_records`.`field_id` = 13
WHERE
`data0`.`record_id` = `records`.`id`
and `data0`.`field_id` = '19'
) AS `__column_19`,
(
SELECT
`meta_records`.`VALUE`
FROM
`records` AS `records100`
INNER JOIN `meta_records` AS `data0` ON `data0`.`VALUE` = `records100`.`id`
LEFT JOIN `meta_records` ON `meta_records`.`record_id` = `records100`.`id`
and `meta_records`.`field_id` = 12
WHERE
`data0`.`record_id` = `records`.`id`
and `data0`.`field_id` = '20'
) AS `__column_20`,
(
SELECT
sum(`meta_records`.`VALUE`)
FROM
`meta_records`
INNER JOIN `records` AS `laravel_reserved_0` ON `laravel_reserved_0`.`id` = `meta_records`.`record_id`
INNER JOIN `meta_records` AS `data0` ON `data0`.`record_id` = `laravel_reserved_0`.`id`
WHERE
`records`.`id` = `data0`.`VALUE`
and `meta_records`.`field_id` = 25
and `data0`.`field_id` = '24'
) AS `__column_26`,
(
SELECT
sum(`meta_records`.`VALUE`)
FROM
`meta_records`
INNER JOIN `records` AS `laravel_reserved_1` ON `laravel_reserved_1`.`id` = `meta_records`.`record_id`
INNER JOIN `meta_records` AS `data0` ON `data0`.`record_id` = `laravel_reserved_1`.`id`
WHERE
`records`.`id` = `data0`.`VALUE`
and `meta_records`.`field_id` = 28
and `data0`.`field_id` = '27'
) AS `__column_27`,
`records`.*
FROM
`records`
WHERE
`collection_id` = 7
LIMIT
10 OFFSET 0
שימו לב שישנם גם עמודות עם חישובים בפנים וגם זה יכול להיות ארוך יותר אם יותר חישובים וכו'