mysql的表设计

MySql 码拜 4年前 (2017-05-01) 722次浏览
最近遇到一张表的设计问题:
anchor表有如下字段:
id
title
is_live
views
content
其中is_live表示主播的直播状态,views表示人气,这两个字段都是频繁更新,php定时脚本每两分钟更新一下这两个字段,这样就带来了该表频繁的update操作,非常影响性能,但是本人将is_live和、views独立出去后,由于本人要使用is_live和views排序,例如
select * from anchor order by is_live desc,views desc,那么之后就不得不使用关联查询来排序,本人想问一下这两种设计对于性能提升哪种更好?或大家有什么好的解决办法,谢谢了!
解决方案

1

才5个字段,假如都不是大型字段,一张表就行了。
具体的update 语句是什么?表设计中预计有多少记录?is_live占总记录的百分之多少?

1

glenshappy
本版等级:T1
结帖率:14.29%

引用:
Quote: 引用:

才5个字段,假如都不是大型字段,一张表就行了。
具体的update 语句是什么?表设计中预计有多少记录?is_live占总记录的百分之多少?

现在有个php脚本定时更新,这张表差不多有30个字段左右,本人上面的表只是例举了php脚本定时更新的,本人认为有问题的地方,
具体的update语句未
update anchor set views =
(case views
when 1 then 182
when 2 then 234
when 3 then 1922
when 4 then 999
when 12 then 928282
when 18 then 8383
when 22 then 8278272
),set is_live=(
case is_live
when 1 then 0,
when 2 then 1,
when 3 then 1,
when 4 then 0,
when 12 then 1,
when 18 then 1,
when 22 then 0
)嗯大致相似这样,表中预计未来需要支撑40几W的记录,is_live和views是频繁更新的,说白一点是定时更新的,现在是2分钟执行一下上面的sql语句,进行了一次全表的update操作,感觉不大好,性能有问题,

没有查询条件,会导致严重的阻塞,虽然你的数据量还不大。

1

这种频繁的全表更新,最好是用内存数据库来实现,假如还用mysql的化,速度肯定没有那么快

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql的表设计
喜欢 (0)
[1034331897@qq.com]
分享 (0)