-
创建索引 题目:在 employees 表的 last_name 列上创建一个索引。 SQL 语句:Create index index_name On table_name(last_name);
-
查看索引 题目:查看 employees 表中已有的索引。 SQL 语句:Show index from employees;
-
删除索引 题目:删除 employees 表中名为 idx_last_name 的索引。
SQL 语句:Drop index idx_last_name from employees;
-
复合索引 题目:在 orders 表的 customer_id 和 order_date 列上创建一个复合索引。 SQL 语句:Create index index_name ON orders(customer_id,order_date);
-
唯一索引 题目:在 users 表的 email 列上创建一个唯一索引。 SQL 语句:Create UNIQUE INDEX index_name ON users(email);
-
使用索引优化查询 题目:假设 products 表有一个名为 idx_price 的索引在 price 列上,优化以下查询: SELECT * FROM products WHERE price > 100; 优化后的 SQL 语句:SELECT pt.priece from products AS pt WHERE price>100;
-
索引覆盖 题目:假设 orders 表有一个复合索引 idx_customer_order 在 customer_id 和 order_date 列上,优化以下查询: SELECT customer_id, order_date FROM orders WHERE customer_id = 100; 优化后的 SQL 语句:SELECT customer_id,order_date FROM orders Where customer_id = 100;
-
索引选择性 题目:计算 employees 表中 department_id 列的索引选择性。 SQL 语句:SELECT COUNT(DISTINCT department_id)/ COUNT(*) AS selectivity From employees;索引选择性的定义:选择性=索引列中不同值的数量/表中的总行数
-
索引失效 题目:假设 products 表有一个名为 idx_price 的索引在 price 列上,以下查询是否会使用索引?SELECT _ FROM products WHERE price _ 2 > 100。不会,where 子句中最好不要做运算,因为这有可能导致索引失效。在查询过程中服务器会优先通过名为'idx_price'的索引进行检索,但是索引无法通过条件有效利用索引。
-
前缀索引 题目:在 products 表的 description 列上创建一个前缀索引,索引长度为 10 个字符。 SQL 语句:Create INDEX idx_price ON products(price(10));
-
索引与排序 题目:假设 orders 表有一个复合索引 idx_customer_order 在 customer_id 和 order_date 列上,优化以下查询: SELECT * FROM orders WHERE customer_id = 100 ORDER BY order_date DESC; 优化后的 SQL 语句:SELECT customer_id,order_date FROM orders WHERE customer_id = 100 ORDER BY order_date DESC;
-
索引与 JOIN 题目:假设 orders 表和 customers 表分别有一个索引在 customer_id 列上, 优化以下查询:SELECT o.order_id, c.customer_name FROM orders o JOIN customers c ON o.customer_id = c.customer_id; 优化后的 SQL 语句:SELECT o.order_id, c.customer_name FROM orders oINNER JOIN customers c ON o.customer_id = c.customer_id;
-
索引与 GROUP BY 题目:假设 orders 表有一个复合索引 idx_customer_order 在 customer_id 和 order_date 列上,优化以下查询: SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id; 优化后的 SQL 语句:SELECT customer_id, COUNT(*) AS order_count FROM orders GROUP BY customer_id;
-
索引与 DISTINCT 题目:假设 orders 表有一个复合索引 idx_customer_order 在 customer_id 和 order_date 列上,优化以下查询: SELECT DISTINCT customer_id FROM orders; 优化后的 SQL 语句:SELECT DISTINCT customer_id FROM orders as o;
-
索引与子查询 题目:假设 orders 表有一个复合索引 idx_customer_order 在 customer_id 和 order_date 列上,优化以下查询: SELECT * FROM orders WHERE customer_id IN (SELECT customer_id FROM customers WHERE customer_id > 100);
#SELECT *FROM orders:这部分是主查询,表示从orders表中选择所有列;
#WHERE customer_id IN(...):表示主查询的WHERE子句,选择orders表中customer_id字段值的条件。条件是customer_id必须在子查询返回的集合中。
#(SELECT customer_id FROM customers WHERE customer_id >100):表示子查询,从customer表中选择customer_id字段,不过此时只选择customer_id大于100的记录。(注:该子查询表示从customer表中查询customer_id大于100的订单记录。)
-
优化后的 SQL 语句: SELECT o.* FROM orders o JOIN customers c ON o.customer_id = c.customer_id WHERE c.customer_id > 100;
03-28
02-17