亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 7155 | 回復(fù): 16
打印 上一主題 下一主題

子查詢與性能問(wèn)題,!真線下降為什么? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-05-28 17:00 |只看該作者 |倒序?yàn)g覽
下面是我的SQL,性能很慢。所引都優(yōu)化過(guò)了。


SELECT product_type_attribute_value.id,
       product_type_attribute_value_locale.*
FROM product_type_attribute_value
     LEFT JOIN product_type_attribute_value_locale ON
      product_type_attribute_value.id =
       product_type_attribute_value_locale.product_type_attribute_value_id AND
        product_type_attribute_value_locale.locale_language_id = '1'
WHERE product_type_attribute_value.product_type_attribute_id = '8' AND
      product_type_attribute_value.id in (SELECT
       product_attribute_value.product_type_attribute_value_id FROM
        product_attribute_value WHERE product_attribute_value.product_id IN (
        SELECT product_item_unsold.product_id FROM product_item_unsold WHERE
         product_item_unsold.product_id IN (SELECT id FROM product WHERE status
          = 'ac' and master_product_id = '324') GROUP BY
           product_item_unsold.product_id) AND
            product_attribute_value.product_type_attribute_id = '8')
ORDER BY list_order ASC


如果分開(kāi)運(yùn)行性能非常之好。如。

先取出部分?jǐn)?shù)據(jù)
SELECT product_item_unsold.product_id FROM product_item_unsold WHERE product_item_unsold.product_id IN ( SELECT id FROM product WHERE status='ac' and master_product_id = '324' ) GROUP BY product_item_unsold.product_id



SELECT product_type_attribute_value.id, product_type_attribute_value_locale.* FROM product_type_attribute_value LEFT JOIN product_type_attribute_value_locale ON product_type_attribute_value.id = product_type_attribute_value_locale.product_type_attribute_value_id AND product_type_attribute_value_locale.locale_language_id = '1' WHERE product_type_attribute_value.product_type_attribute_id = '8' AND product_type_attribute_value.id in ( SELECT product_attribute_value.product_type_attribute_value_id FROM product_attribute_value WHERE product_attribute_value.product_id IN ( 上面的結(jié)果 ) AND product_attribute_value.product_type_attribute_id = '8' ) ORDER BY list_order ASC


為什么?是不是mysql subquery有層數(shù)限制。。我套太多層了?

[ 本帖最后由 netkiller 于 2008-5-28 17:19 編輯 ]

論壇徽章:
1
雙子座
日期:2013-08-19 14:56:16
2 [報(bào)告]
發(fā)表于 2008-05-28 17:10 |只看該作者
原帖由 netkiller 于 2008-5-28 17:00 發(fā)表
下面是我的SQL,性能很慢。所引都優(yōu)化過(guò)了。

SELECT product_type_attribute_value.id, product_type_attribute_value_locale.* FROM product_type_attribute_value LEFT JOIN product_type_attribute_value ...

我給你整理一下
SELECT   PRODUCT_TYPE_ATTRIBUTE_VALUE.ID,
         PRODUCT_TYPE_ATTRIBUTE_VALUE_LOCALE.*
FROM     PRODUCT_TYPE_ATTRIBUTE_VALUE
         LEFT JOIN PRODUCT_TYPE_ATTRIBUTE_VALUE_LOCALE
         ON PRODUCT_TYPE_ATTRIBUTE_VALUE.ID = PRODUCT_TYPE_ATTRIBUTE_VALUE_LOCALE.PRODUCT_TYPE_ATTRIBUTE_VALUE_ID
         AND PRODUCT_TYPE_ATTRIBUTE_VALUE_LOCALE.LOCALE_LANGUAGE_ID = '1'
WHERE    PRODUCT_TYPE_ATTRIBUTE_VALUE.PRODUCT_TYPE_ATTRIBUTE_ID = '8'
         AND PRODUCT_TYPE_ATTRIBUTE_VALUE.ID IN
         (
             SELECT     PRODUCT_ATTRIBUTE_VALUE.PRODUCT_TYPE_ATTRIBUTE_VALUE_ID
                      FROM   PRODUCT_ATTRIBUTE_VALUE
                     WHERE  PRODUCT_ATTRIBUTE_VALUE.PRODUCT_ID IN
                          (
                          SELECT       PRODUCT_ITEM_UNSOLD.PRODUCT_ID
                                      FROM     PRODUCT_ITEM_UNSOLD
                                      WHERE    PRODUCT_ITEM_UNSOLD.PRODUCT_ID IN
                                      (
                                      SELECT     ID FROM   PRODUCT
                                            WHERE  STATUS = 'ac'
                                            AND MASTER_PRODUCT_ID = '324'
                                    ) GROUP BY PRODUCT_ITEM_UNSOLD.PRODUCT_ID
                          ) AND PRODUCT_ATTRIBUTE_VALUE.PRODUCT_TYPE_ATTRIBUTE_ID = '8'
             ) ORDER BY LIST_ORDER ASC


[ 本帖最后由 豬知豬之道 于 2008-5-28 17:18 編輯 ]

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-05-29 09:45 |只看該作者
in的子查詢本來(lái)效率就很低的,更何況你嵌套了多個(gè)in,查詢出來(lái)的結(jié)果集數(shù)量是幾何增長(zhǎng)的,把in查詢轉(zhuǎn)換成left join就效率高了

[ 本帖最后由 voxxu 于 2008-5-29 09:47 編輯 ]

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-05-29 09:58 |只看該作者
left join 就要很多表,并且很多條件。可讀性就差了。

select * from (select * from table) as tmp left join table on xxx=xxx

可以這樣寫(xiě)嗎?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-05-29 10:08 |只看該作者
原帖由 netkiller 于 2008-5-29 09:58 發(fā)表
left join 就要很多表,并且很多條件?勺x性就差了。

select * from (select * from table) as tmp left join table on xxx=xxx

可以這樣寫(xiě)嗎?



可讀性是差了點(diǎn),但是性能會(huì)高很多,看你怎么取舍了
如果一定要用in的子查詢,就把子查詢的結(jié)果盡量最小化

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-05-29 10:44 |只看該作者
Just replace your subquery with joins and unions.

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2008-05-30 03:55 |只看該作者
原帖由 voxxu 于 2008-5-29 10:08 發(fā)表



可讀性是差了點(diǎn),但是性能會(huì)高很多,看你怎么取舍了
如果一定要用in的子查詢,就把子查詢的結(jié)果盡量最小化


贊同!

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2008-05-30 07:30 |只看該作者

這也是mysql的特性了
簡(jiǎn)單查詢飛速
復(fù)雜查詢就慢點(diǎn)了

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2008-05-30 09:21 |只看該作者
原帖由 cxczqfrx 于 2008-5-30 07:30 發(fā)表

這也是mysql的特性了
簡(jiǎn)單查詢飛速
復(fù)雜查詢就慢點(diǎn)了


The document said.
The main advantages of subqueries are:

They allow queries that are structured so that it is possible to isolate each part of a statement.

They provide alternative ways to perform operations that would otherwise require complex joins and unions.

They are, in many people's opinion, more readable than complex joins or unions. Indeed, it was the innovation of subqueries that gave people the original idea of calling the early SQL “Structured Query Language.”


So I think you should read it more seriously.

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2008-05-30 09:51 |只看該作者
是不是因?yàn)镸yISAM 問(wèn)題。
以前用Innodb 我寫(xiě)過(guò)更復(fù)雜的都沒(méi)有問(wèn)題。相當(dāng)?shù)暮谩?br /> SQL 打印出來(lái)可能好幾頁(yè)A4紙。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP