mysql优化(总结)

今天输入了3w数据进行了一个简单的测试,但是结果和网络上一般的说法不一样,记录一下,有时间了使用百万条数据测试再更新。

有朋友发现错误请指点一下,小的再三感谢。

1、使用 inner join 替代 where,显式查询比隐式更快

2、尽量不为null,不过提升性能不大,不优先考虑,如果是索引列,则最好不为null
3、索引不超过5个,一般是主键、order by,groud by
4、text blob等不要使用全文检索
5、tinyint, smallint, mediumint, int, bigint ,它们分别需要8、16、24、32、64位存储空间。
       int(1) int(11) 这个效率是一样的,但是如果外键 tinyint和int冲突会报错,像省这样的只用tinyint即可,如果作为主键\外键还是有提升
    Signed(有符号)和unsigned(无符号、正整数)类型占用的存储空间是一样的,性能也一样。因此可以根据实际情况采用合适的类型。
6、float类型占用4个字节,double占用8个字节,而且精度更大,范围更广。和整数一样,你选择的仅仅是存储类型。mysql在内部对浮     
     点类型使用double进行计算。
    由于需要额外的空间和计算开销,只有在需要 对小数进行精确的时候才使用decimal,比如保存金融数据。
7、 DATETIME:能够保存大范围的值,从1001年到9999年,精度为秒,它把日期和时间封装到一个格式为yyyyMMddHHmmss的整数当
     中,与时区无关。它使用了8个字节存储空间。

     TIMESTAMP:保持了自1970年1月1日午夜(格林尼治标准时间)以来的秒数,它和Unix的时间戳相同。它只使用了4个字节存储空

     间。和时区有关


自己的一点想法:

主键因为有索引,所以查询效果好,所以可以这样写

select * from user where id in (select id from user where 各种条件 order by id ase)

条件频繁使用最好也有索引,like “%xx%” 则索引无用,like "xx%" 则索引有用

like无法优化,有一些自带函数(eg:instr),和java的字符串处理差不多,但是like也是使用的正则,所以就使用like即可


单字段,多条件就使用

SELECT * FROM question where INSTR( q_topic, '驾驶习惯' ,'xxx'.....) > 0



测试总结:

1、like比insr快(3W数据是这样)

2、索引速度非常快

3、limit的优化确实好

4、where 比 inner join 快(3W数据是这样)

5、* 确实比罗列 列要慢

6、排除数量大的,有索引的条件放到where的最后面(未感觉到,我放到哪里都一样)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值