我想向用户显示他尚未查看的内容。 我考虑过存储一个字符串,其中包含由','分隔的项目的ID。用户已查看但我认为我不知道字符串的可能长度。 我能找到的替代方案是将其存储为日志。像
这样的表格$customers = Tag::all();
$total_earnings_janunary = 0;
$query_date = '2017-01-04';
$start_date_janunary = date('Y-01-01', strtotime($query_date));
$end_date_janunary = date('Y-m-t', strtotime($query_date));
foreach ($customers as $customer) {
if (Auth::User()->gym_code == $customer->gym_code ) {
$main_data_janunarys = DB::table('tags')->whereBetween('created_at', [$start_date_janunary,$end_date_janunary])->get();
}
}
for ($i=0; $i <= count($main_data_janunarys); $i++) {
$total_earnings_janunary = $total_earnings_janunary + $main_data_janunarys[$i]->amount;
dd($total_earnings_janunary);
}
对于大约一万个用户和数千个项目,哪种方法会更好。
答案 0 :(得分:1)
像这样的对的表只有10M行。那是&#34;中等规模&#34;如桌子一样。
有无
PRIMARY KEY(user_id, item_id),
INDEX(item_id, user_id)
并且,如果您没有超过10K和1K,请考虑使用SMALLINT UNSIGNED
(最多64K,2字节)。或者,更保守一点,MEDIUMINT UNSIGNED
(3字节最多16M)。