优化这个sql select * from user where name like '%张%' and created ='2021-08-10'
时间: 2024-03-21 12:39:21 浏览: 15
可以尝试以下两种优化方式:
1. 添加索引
为了加快查询速度,可以在`name`和`created`字段上分别添加索引。假设`user`表的结构如下:
```
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`created` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
则可以使用以下语句添加索引:
```
ALTER TABLE `user` ADD INDEX `idx_name` (`name`);
ALTER TABLE `user` ADD INDEX `idx_created` (`created`);
```
2. 使用预处理语句
如果您的查询语句中的`name`和`created`值是变量,那么可以使用预处理语句来避免每次查询都需要重新编译和解析SQL语句的开销。例如,使用`mysqli`扩展可以这样写:
```
$name = '%张%';
$created = '2021-08-10';
$stmt = $mysqli->prepare("SELECT * FROM `user` WHERE `name` LIKE ? AND `created` = ?");
$stmt->bind_param("ss", $name, $created);
$stmt->execute();
$result = $stmt->get_result();
```
这里使用了`?`占位符来代替变量,然后通过`bind_param`方法将变量绑定到占位符上。这样做可以避免SQL注入攻击,并且可以提高查询效率。