【发布时间】:2015-06-30 07:21:45
【问题描述】:
我有三张桌子。
雷达数据表(以id为主),也有provision_file_id和provision_speed_id两列。
Violation_speed 表(以 id 为主)
violation_file 表(以 id 为主)
我想选择所有雷达数据,限制为 1000,从某个开始间隔到结束间隔,加入违规速度表。每个雷达数据都必须有一个violation_speed_id。
然后我想加入违规文件表,但不是每个雷达记录都对应于违规文件ID,有些记录的违规文件ID为0,表示没有相应的文件。
我现在的sql是这样的,
$results = DB::table('radar_data')
->join('violation_speed', 'radar_data.violation_speed_id', '=', 'violation_speed.id')
->leftjoin('violation_video_file', 'radar_data.violation_video_file_id', '=', 'violation_video_file.id')
->select('radar_data.id as radar_id',
'radar_data.violation_video_file_id',
'radar_data.violation_speed_id',
'radar_data.speed',
'radar_data.unit',
'radar_data.violate',
'radar_data.created_at',
'violation_speed.violation_speed',
'violation_speed.unit as violation_unit',
'violation_video_file.video_saved',
'violation_video_file.video_deleted',
'violation_video_file.video_uploaded',
'violation_video_file.path',
'violation_video_file.video_name')
->where('radar_data.violate', '=', '1')
->orderBy('radar_data.id', 'desc')
->offset($from_id)
->take($max_length)
->get();
它是 PHP Laravel。但我认为翻译成mysql语句是直接的。
我的问题是,选择这样的数据是一种好方法吗?我试过了,但是如果雷达数据增长到一个很大的值,它似乎有点慢。
谢谢。
【问题讨论】:
标签: php mysql database laravel join