> 백엔드 개발 > PHP 튜토리얼 > php如何在每个日期下显示数据;同mysql语句 优化性能

php如何在每个日期下显示数据;同mysql语句 优化性能

WBOY
풀어 주다: 2016-06-06 20:15:30
원래의
898명이 탐색했습니다.

php如何在每个日期下显示数据;同mysql语句 优化性能

@数据库设计
id pay_name pay_time(时间戳int)

@如何像图一样,按时间对该表进行排列,相同时间的数据排在一起

@之前的方案是
首选group by(pay_time)得到所有的时间
在每个时间下,循环所有的数据来对比时间是否和以上时间相等,但每次都要对比所有的时间。
但这样浪费性能。

回复内容:

php如何在每个日期下显示数据;同mysql语句 优化性能

@数据库设计
id pay_name pay_time(时间戳int)

@如何像图一样,按时间对该表进行排列,相同时间的数据排在一起

@之前的方案是
首选group by(pay_time)得到所有的时间
在每个时间下,循环所有的数据来对比时间是否和以上时间相等,但每次都要对比所有的时间。
但这样浪费性能。

1、首先要给pay_time加上索引。

2、按照时间从数据库中取出你需要的数据数量,select * from table where pay_time >=t1 and pay_time

3、在前端对你的数据按照时间进行分组。

<code>SET sql_mode = ''; --不加这一条语句group by 会报错 ,加了又不太安全。建议再加个varchar类型的字段保存时间,加了字段后就不用FROM_UNIXTIME()函数了

select *,FROM_UNIXTIME(a.pay_time,"%Y-%m-%d") as ptime 
FROM test a LEFT JOIN test b on 
FROM_UNIXTIME(a.pay_time,"%Y-%m-%d") = FROM_UNIXTIME(b.pay_time,"%Y-%m-%d")
 and a.id >= b.id GROUP BY a.id,a.pay_name,datas 
 HAVING count(b.id) </code>
로그인 후 복사
<code>count(b.id) </code>
로그인 후 복사

之后再对数据根据 ptime 进行分组就行了

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿