零散知识点:MYSQL 篇

注:本零散知识点系列所有内容均来自 “程序猿在囧途”系列群 聊天记录

循环累加一个 字段 并用逗号分隔
select shit from( select 要累加的字段, @tt:=CONCAT(@tt,',',a.要累加的字段) as shit from 某表 a,(select @tt:='') b ) c ORDER BY LENGTH(c.shit) desc limit 0,1
问答

用户表 :包含id主键索引,用户名字段和用户密码 还有用户入库时间
问题1、这张表一般加索引的有哪几个字段
问题2、如果这表 有百万数据。那么 我要获取该表的总记录数 ,怎写sql?
问题3、如果我的数据 有几个亿 。那么 怎么利用 各种手段 计算表的记录数

1.user_name
2:select count(*) from table USE INDEX(PRIMARY);

3:思路是必须结合shell script
系统初始化时利用 shell把每个表的记录 保存在缓存里
当程序 对表进行操作时, 利用程序 让该条缓存失效
shell设置成定时任务。 一旦发生某个缓存失效,就重新计算count(*)
并再次插入缓存
大家注意, 我刚才提了两个问题
1、该表常见索引会在哪。 大家都回答是user_name。这是对的
2、如果没有建立user_name索引,那么count(*) 确实不要做任何手脚
3、但是如果你在第一步建立了user_name索引。那么cout(*)的时候 就要加上use index(PRIMARY)
因为 如果 你不加。mysql这傻缺 会默认用你的user_name 作为扫描主键
每一次连接都会慢 所谓的0.0x秒
如果并发高、PV大 数据量大。 服务器就崩溃了

如果你的 user_name字段值很长。 那么必定是比主键慢 (主键因为是数字)
往往很多表的主键 用的不是数字 ,而是 guid 很多位的那种 

USE INDEX(PRIMARY) 如何解?
代表 强制使用 主键索引

好。 本题我们 发现几个现象
1、上述功能和PHP或框架有关系吗? :没有
2、做一个系统,到了进阶,哪些知识点是最重要的? :Linux Mysql

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值