面试题答案
一键面试索引设计
为了优化按年龄和邮箱进行的查询操作,应该在age
和email
字段上创建复合索引。在MySQL中,可以使用以下语句创建复合索引:
CREATE INDEX idx_age_email ON user_table(age, email);
这里假设表名为user_table
。复合索引的顺序很重要,在查询时会根据索引的顺序进行匹配,所以将更常作为查询条件的字段放在前面。
Node.js使用mysql
模块执行查询示例代码
const mysql = require('mysql');
// 创建连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'your_user',
password: 'your_password',
database: 'your_database',
connectionLimit: 10
});
// 执行查询
function queryUsersByAgeAndEmail(age, email, callback) {
const sql = 'SELECT id, name, age, email FROM user_table WHERE age = ? AND email = ?';
pool.query(sql, [age, email], (error, results, fields) => {
if (error) {
callback(error, null);
} else {
callback(null, results);
}
});
}
// 使用示例
queryUsersByAgeAndEmail(30, 'example@example.com', (error, results) => {
if (error) {
console.error('查询出错:', error);
} else {
console.log('查询结果:', results);
}
});
上述代码首先创建了一个MySQL连接池,然后定义了一个函数queryUsersByAgeAndEmail
来执行按年龄和邮箱查询用户的操作。在函数内部,使用pool.query
方法执行SQL查询,其中?
是占位符,实际的值通过数组传入。最后给出了函数的使用示例。