面试题答案
一键面试优化思路
- 索引优化:对
price
和stock_status
字段建立复合索引,这样在查询时可以快速定位到符合条件的记录。因为表数据量非常大,索引能大大减少数据扫描范围。 - 避免函数操作:在
WHERE
子句中尽量避免对字段进行函数操作,以免索引失效。
SQL示例
假设使用MySQL数据库,示例如下:
-- 先创建复合索引
CREATE INDEX idx_price_stock_status ON products (price, stock_status);
-- 查询语句
SELECT product_name, price, stock_status
FROM products
WHERE price BETWEEN 50 AND 100
AND stock_status IS NOT NULL
AND stock_status IN ('in_stock', 'low_stock');
在其他数据库(如Oracle)中,索引创建和查询语句基本类似,但语法细节上可能略有不同。例如Oracle创建索引语法为:
-- 创建复合索引
CREATE INDEX idx_price_stock_status ON products (price, stock_status);
-- 查询语句
SELECT product_name, price, stock_status
FROM products
WHERE price BETWEEN 50 AND 100
AND stock_status IS NOT NULL
AND stock_status IN ('in_stock', 'low_stock');