SELECT
(SELECT UDA_VALUES.UDA_VALUE_DESC
FROM UDA_ITEM_LOV,
UDA_VALUES
WHERE UDA_ITEM_LOV.UDA_ID = 3
AND UDA_ITEM_LOV.UDA_VALUE = UDA_VALUES.UDA_VALUE
AND UDA_ITEM_LOV.UDA_ID = UDA_VALUES.UDA_ID
AND UDA_ITEM_LOV.ITEM = ITEM_MASTER_NEW.ITEM) AS BRAND
FROM
ITEM_MASTER_NEWUDA_ITEM_LOV表中数据量有2千万条,索引和主键是ITEM+UDA_ID+UDA_VALUE
ITEM_MASTER_NEW表中数据量有70万条,索引和主键是ITEM
现在这条查询要花费11秒钟,想改善觉得无从下手。请教各位高手指点,谢谢
(SELECT UDA_VALUES.UDA_VALUE_DESC
FROM UDA_ITEM_LOV,
UDA_VALUES
WHERE UDA_ITEM_LOV.UDA_ID = 3
AND UDA_ITEM_LOV.UDA_VALUE = UDA_VALUES.UDA_VALUE
AND UDA_ITEM_LOV.UDA_ID = UDA_VALUES.UDA_ID
AND UDA_ITEM_LOV.ITEM = ITEM_MASTER_NEW.ITEM) AS BRAND
FROM
ITEM_MASTER_NEWUDA_ITEM_LOV表中数据量有2千万条,索引和主键是ITEM+UDA_ID+UDA_VALUE
ITEM_MASTER_NEW表中数据量有70万条,索引和主键是ITEM
现在这条查询要花费11秒钟,想改善觉得无从下手。请教各位高手指点,谢谢
FROM UDA_ITEM_LOV,
UDA_VALUES
WHERE UDA_ITEM_LOV.UDA_ID = 3
AND UDA_ITEM_LOV.UDA_VALUE = UDA_VALUES.UDA_VALUE
AND UDA_ITEM_LOV.UDA_ID = UDA_VALUES.UDA_ID
有多少条?
SELECT UDA_ITEM_LOV.UDA_VALUE, UDA_VALUES.UDA_ID
FROM UDA_ITEM_LOV,
ITEM_MASTER_NEW
WHERE UDA_ITEM_LOV.UDA_ID = 3
AND UDA_ITEM_LOV.ITEM = ITEM_MASTER_NEW.ITEM
FROM UDA_ITEM_LOV,
UDA_VALUES
WHERE UDA_ITEM_LOV.UDA_ID = 3
AND UDA_ITEM_LOV.UDA_VALUE = UDA_VALUES.UDA_VALUE
AND UDA_ITEM_LOV.UDA_ID = UDA_VALUES.UDA_ID
AND UDA_ITEM_LOV.ITEM = ITEM_MASTER_NEW.ITEMUDA_ITEM_LOV表中数据量有2千万条,索引和主键是ITEM+UDA_ID+UDA_VALUE
ITEM_MASTER_NEW表中数据量有70万条,索引和主键是ITEM------------------------------1.
并非所有情况下index都比full table scan要快,但是大多数情况下是,从你反映出的情况看,要select出来的行数比source要小得多,所以尝试建立索引2.
UDA_ITEM_LOV单独对UDA_ID字段加index
ITEM_MASTER_NEW对连接条件字段ITEM+UDA_ID+UDA_VALUE加index3.
一般加non-unique index,如果逻辑上index字段是唯一的话,加unique index
在sql里加hint让sql语句走index
SELECT t1.UDA_VALUE_DESC as BRAND
FROM UDA_VALUES t1,
(SELECT from UDA_ITEM_LOV where UDA_ID = 3) t2,
ITEM_MASTER_NEW t3
WHERE t1.UDA_VALUE = t2.UDA_VALUE
AND t1.UDA_ID = t2.UDA_ID
AND t2.ITEM = t3.ITEM