-- 1table BEGIN FOR i IN1..10000 LOOP INSERTINTO products_1table (product_name, category, price, description, brand, warranty, color, product_size) VALUES ( 'Product '|| i, CASE WHENMOD(i, 2) =0THEN'Electronics' ELSE'Apparel' END, ROUND(DBMS_RANDOM.VALUE(100, 1000), 2), 'Description of product '|| i, CASE WHENMOD(i, 2) =0THEN'Brand'|| i ELSENULL END, CASE WHENMOD(i, 2) =0THEN'1 year' ELSENULL END, CASE WHENMOD(i, 2) =1THEN'Red' ELSENULL END, CASE WHENMOD(i, 2) =1THEN'L' ELSENULL END ); END LOOP; COMMIT; END;
DECLARE product_id NUMBER; BEGIN FOR i IN1..10000 LOOP INSERTINTO products_eav (product_name, category, price, description) VALUES ( 'Product '|| i, CASE WHENMOD(i, 2) =0THEN'Electronics' ELSE'Apparel' END, ROUND(DBMS_RANDOM.VALUE(100, 1000), 2), -- 隨機生成價格 'Description of product '|| i ) RETURNING product_id INTO product_id;
-- 查詢表中的所有資料 SELECT p.product_name, a1.attribute_value AS brand, a2.attribute_value AS warranty, a3.attribute_value AS color, a4.attribute_value AS product_size FROM products_eav p LEFTJOIN product_attributes a1 ON p.product_id = a1.product_id AND a1.attribute_name ='brand' LEFTJOIN product_attributes a2 ON p.product_id = a2.product_id AND a2.attribute_name ='warranty' LEFTJOIN product_attributes a3 ON p.product_id = a3.product_id AND a3.attribute_name ='color' LEFTJOIN product_attributes a4 ON p.product_id = a4.product_id AND a4.attribute_name ='product_size' -- 計算資料筆數,確認插入是否達到 10,000 筆 SELECTCOUNT(*) FROM products_eav p LEFTJOIN product_attributes a1 ON p.product_id = a1.product_id AND a1.attribute_name ='brand' LEFTJOIN product_attributes a2 ON p.product_id = a2.product_id AND a2.attribute_name ='warranty' LEFTJOIN product_attributes a3 ON p.product_id = a3.product_id AND a3.attribute_name ='color' LEFTJOIN product_attributes a4 ON p.product_id = a4.product_id AND a4.attribute_name ='product_size'
只顯示查詢的執行時間,不顯示具體的查詢結果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
SET TIMING ON;
DECLARE v_dummy VARCHAR2(100); -- 假變數 BEGIN FOR rec IN ( SELECT p.product_name, a1.attribute_value AS brand, a2.attribute_value AS warranty, a3.attribute_value AS color, a4.attribute_value AS product_size FROM products_eav p LEFTJOIN product_attributes a1 ON p.product_id = a1.product_id AND a1.attribute_name ='brand' LEFTJOIN product_attributes a2 ON p.product_id = a2.product_id AND a2.attribute_name ='warranty' LEFTJOIN product_attributes a3 ON p.product_id = a3.product_id AND a3.attribute_name ='color' LEFTJOIN product_attributes a4 ON p.product_id = a4.product_id AND a4.attribute_name ='product_size' ) LOOP v_dummy := rec.product_name; -- 只是為了取結果而不顯示出來 END LOOP; END;
-- 查詢表中的所有資料 SELECT DATA FROM products_json; -- 計算資料筆數,確認插入是否達到 10,000 筆 SELECTCOUNT(DATA)FROM products_json
只顯示查詢的執行時間,不顯示具體的查詢結果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
SET TIMING ON;
DECLARE v_dummy VARCHAR2(100); -- 假變數 BEGIN FOR rec IN (SELECT JSON_VALUE(DATA, '$.product_name') AS product_name, JSON_VALUE(DATA, '$.attributes.brand') AS brand, JSON_VALUE(DATA, '$.attributes.warranty') AS warranty, JSON_VALUE(DATA, '$.attributes.color') AS color, JSON_VALUE(DATA, '$.attributes.product_size') AS product_size FROM products_json) LOOP v_dummy := rec.product_name; -- 只是為了取結果而不顯示出來 END LOOP; END;
query_eav = """ SELECT p.product_name, a1.attribute_value AS brand, a2.attribute_value AS warranty, a3.attribute_value AS color, a4.attribute_value AS product_size FROM products_eav p LEFT JOIN product_attributes a1 ON p.product_id = a1.product_id AND a1.attribute_name = 'brand' LEFT JOIN product_attributes a2 ON p.product_id = a2.product_id AND a2.attribute_name = 'warranty' LEFT JOIN product_attributes a3 ON p.product_id = a3.product_id AND a3.attribute_name = 'color' LEFT JOIN product_attributes a4 ON p.product_id = a4.product_id AND a4.attribute_name = 'product_size' """
query_json = """ SELECT JSON_VALUE(DATA, '$.product_name') AS product_name, JSON_VALUE(DATA, '$.attributes.brand') AS brand, JSON_VALUE(DATA, '$.attributes.warranty') AS warranty, JSON_VALUE(DATA, '$.attributes.color') AS color, JSON_VALUE(DATA, '$.attributes.product_size') AS product_size FROM products_json """