文档介绍:该【Mysql面试笔试题 】是由【闰土】上传分享,文档一共【4】页,该文档可以免费在线阅读,需要了解更多关于【Mysql面试笔试题 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。MYSQL面试题:简单叙述一下MYSQL的优化
.数据库的设计
尽量把数据库设计的更小的占磁盘空间.
1).尽可能使用更小的整数类型.(mediumint就比int更合适).
2).尽可能的定义字段为notnull,除非这个字段需要null.
3).如果没有用到变长字段的话比如varchar,那就采用固定大小的纪录
格式比如char.
4).
效
5).只创建确实需要的索引。索引有利于检索记录,但是不利于快速保存
记录。如果总是要在表的组合字段上做搜索,那么就在这些字段上创建
索引。
字段,首先就应该多复制这些字段,使索引更好的压缩。
6).所有数据都得在保存到数据库前进行处理。
7).所有字段都得有默认值。
8).在某些情况下,把一个频繁扫描的表分成两个速度会快好多。在对动
态格式表扫描以取得相关记录时,它可能使用更小的静态格式表的情况
下更是如此。
1).尽量使用长连接
2).explain复杂的SQL语句。
3).如果两个关联表要做比较话,做比较的字段必须类型和长度都一致.
4).
次fulltablescan.
5).如果想要清空表的所有纪录,建议用truncatetabletablename
而不是deletefromtablename.
6).能使用STOREPROCEDURE或者USERFUNCTION
的时候
7).
infile来导入大量数据,这比单纯的indert快好多.
8).经常OPTIMIZETABLE来整理碎片.
9).还有就是date类型的数据如果频繁要做比较的话尽量保存在
unsignedint类型比较快。
1).磁盘搜索.
并行搜索,把数据分开存放到多个磁盘中,这样能加快搜索时间.
2).磁盘读写(IO)
可以从多个媒介中并行的读取数据。
3).CPU周期
。
4).内存带宽
当CPU要将更多的数据存放到CPU的缓存中来的话,内存的带宽就成
了瓶颈.
mysql如何实现高效分页
先看一下分页的基本原理(我拿的是CSDN那个百万级数据库来测
试!):
SELECT*FROM`csdn`ORDERBYidDESCLIMIT100000,2000;
耗时:
分析:对上面的mysql语句说明:limit100000,2000的意思扫描满足条
件的102000行,扔掉前面的100000行,返回最后的2000行。
问题就在这里,如果是limit100000,20000,需要扫描120000行,在一
个高并发的应用里,每次查询需要扫描超过100000行,性能肯定大打
折扣。
在《efficientpaginationusingmysql》中提出的clue方式。
利用clue方法,给翻页提供一些线索,比如还是SELECT*FROM
`csdn`orderbyiddesc,按id降序分页,每页2000条,当前是第50页,
当前页条目id最大的是102000,最小的是100000。如果我们只提供上
一页、下一页这样的跳转(不提供到第N页的跳转)。
那么在处理上一页的时候SQL语句可以是:
SELECT*FROM`csdn`WHEREid<=102000ORDERBYidDESC
LIMIT2000;#上一页
耗时:
处理下一页的时候SQL语句可以是:
SELECT*FROM`csdn`WHEREid>102000ORDERBYidASC
LIMIT2000;#下一页
耗时:
这样,不管翻多少页,每次查询只扫描20行。效率大大提高了!
但是,这样分页的缺点是只能提供上一页、下一页的链接形式。