数据库sql的优化问题的面试题

想一下这个道面试题怎么做

有一张user表有1000万条数据,请为下面的sql提供优化建议?

字段分别为: 主键id,用户id,姓名,性别

select * from user where 姓名 like  '%张%' order by 主键id limit 0,100










提示:一张表可以建多少个主键?

















可以建3~4个索引。

正确答案:

*换成 对应的字段

姓名可以加索引,%如果姓名是张开头可以去掉前面的%

注:where 姓名 like  '%张%' 这样的前后都有模糊搜索是加不了索引的



下面内容来自百度
sql的多like优化问题:
select * from table where facctcode = '233[深圳]' and facctattr like '投资%' and facctattr not like '%溢折价%' and facctattr not like '%估值增值%' 请问这种语句有办法优化么,因为数据库方面用的有sqlserver,oracle,db2 所以尽量使用sql...
  1. facctcode = '233[深圳]'    可以使用索引,建立索引

  2. facctattr like '投资%'        可以使用索引,建立索引

  3. facctattr not like '%溢折价%'   无法使用索引

  4. facctattr not like '%估值增值%'  无法使用索引

也就是说,可以对 列   facctcode  和  facctattr  分别建立索引









以下是一些常见的数据库SQL优化面试题: 1. 如何优化SQL查询语句的性能? 答:可以通过以下几个方面来优化SQL查询语句的性能: - 使用索引:在经常使用的列上创建索引,可以大大提高查询的速度。 - 避免使用SELECT *:只查询需要的列,可以减少查询的数据量,提高查询速度。 - 减少子查询:尽量避免使用子查询,可以考虑使用连接查询或者临时表来优化查询。 - 避免使用模糊查询:尽量使用等于或者范围查询,避免使用LIKE等模糊查询。 - 优化查询语句的顺序:尽量先查询限制条件严格的语句,再查询限制条件相对宽松的语句。 2. 什么是索引?如何创建索引? 答:索引是一种数据结构,用于提高查询速度。在数据库中,可以在表上创建索引,以便在查询时快速定位到数据。创建索引的方法一般有以下几种: - 在创建表时创建索引:可以在CREATE TABLE语句中使用INDEX关键字来创建索引。 - ALTER TABLE语句创建索引:可以使用ALTER TABLE语句来创建索引。 - 使用CREATE INDEX语句创建索引:可以使用CREATE INDEX语句来创建索引。 3. 如何避免SQL注入? 答:SQL注入是一种常见的安全漏洞,可以通过以下几个方面来避免SQL注入: - 使用参数化查询:可以使用参数化查询来避免SQL注入。 - 过滤输入数据:可以对输入数据进行过滤,例如去除特殊字符等。 - 使用ORM框架:ORM框架可以自动对输入数据进行过滤和转义,可以有效避免SQL注入。 4. 如何优化SQL查询语句的执行计划? 答:可以通过以下几个方面来优化SQL查询语句的执行计划: - 使用合适的索引:在查询语句中使用合适的索引,可以让数据库选择更优的执行计划。 - 重新设计查询语句:可以通过重新设计查询语句,将一些查询拆分成多个小的查询,以便优化执行计划。 - 使用适当的统计信息:可以使用数据库提供的统计信息来优化执行计划,例如使用ANALYZE TABLE语句来更新表的统计信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值