面试题答案
一键面试实现思路
- 使用正则表达式:因为要匹配特定格式'[数字]-[数字]',正则表达式是较为合适的工具。
- 索引优化:如果
log_message
字段上没有索引,查询会全表扫描,效率较低。所以考虑在log_message
字段上创建索引,但要注意大字段创建索引可能会占用大量空间,且插入、更新操作性能会有影响。 - 避免函数操作:在
WHERE
子句中尽量避免对字段使用函数,因为这会导致索引失效,从而影响查询效率。
SQL语句(以MySQL为例)
-- 创建索引
CREATE INDEX idx_log_message ON logs(log_message);
-- 查询语句
SELECT * FROM logs
WHERE log_message REGEXP '[0-9]+-[0-9]+';
效率提升原因
- 索引:通过在
log_message
字段上创建索引,查询时数据库可以利用索引快速定位到符合条件的数据行,避免全表扫描,大幅提高查询效率。 - 正则表达式匹配:正则表达式
[0-9]+-[0-9]+
能够准确匹配到我们需要的格式,虽然正则表达式查询本身可能相对复杂,但结合索引使用,可以较好地平衡效率与功能需求。