Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- Create the customers table CREATE TABLE customers ( customer_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) NOT NULL ); -- Insert 25 random customer records INSERT INTO customers (name) VALUES ('Alice Smith'), ('Bob Johnson'), ('Charlie Brown'), ('Diana Prince'), ('Ethan Hunt'), ('Fiona Gallagher'), ('George Miller'), ('Hannah Abbott'), ('Ian Fleming'), ('Jane Austen'), ('Kevin Spacey'), ('Laura Croft'), ('Michael Jordan'), ('Nancy Drew'), ('Oliver Twist'), ('Penelope Cruz'), ('Quentin Tarantino'), ('Rachel Green'), ('Steve Rogers'), ('Tina Turner'), ('Ursula K. Le Guin'), ('Victor Hugo'), ('Wendy Darling'), ('Xavier Roberts'), ('Yvonne Craig'); -- Create the orders table CREATE TABLE orders ( order_id INTEGER PRIMARY KEY AUTOINCREMENT, customer_id INT, order_date DATETIME, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE ); CREATE INDEX idx_orders_customer ON orders(customer_id); INSERT INTO orders (customer_id) WITH RECURSIVE row_num (n) AS ( SELECT 1 UNION ALL SELECT n + 1 FROM row_num WHERE n < 1000 ) SELECT (ABS(RANDOM()) % 25) + 1 FROM row_num; CREATE TEMP TABLE IF NOT EXISTS _benchmark ( start_time REAL ); -- Очищаем таблицу и записываем текущее время DELETE FROM _benchmark; INSERT INTO _benchmark (start_time) VALUES (STRFTIME('%f', 'now')); SELECT customers.customer_id, COUNT(order_id) AS orders_count FROM customers JOIN orders ON customers.customer_id = orders.customer_id GROUP BY customers.customer_id; SELECT (STRFTIME('%f', 'now') - start_time) * 1000 AS 'ExecutionTime_ms' FROM _benchmark; DELETE FROM _benchmark; INSERT INTO _benchmark (start_time) VALUES (STRFTIME('%f', 'now')); SELECT customers.customer_id, (SELECT COUNT(order_id) FROM orders WHERE orders.customer_id = customers.customer_id) AS orders_count FROM customers; SELECT (STRFTIME('%f', 'now') - start_time) * 1000 AS 'ExecutionTime_ms2' FROM _benchmark; EXPLAIN QUERY PLAN -- План для JOIN SELECT c.customer_id, COUNT(o.order_id) AS orders_count FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id GROUP BY c.customer_id; EXPLAIN QUERY PLAN -- План для Подзапроса SELECT c.customer_id, (SELECT COUNT(o.order_id) FROM orders o WHERE o.customer_id = c.customer_id) AS orders_count FROM customers c;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear