1、SELECT A.*,B.* FROM table_A A LEFT JOIN table_B b ON B.id = A.id
優點:一次查詢,打開一次數據庫連接,打開數據庫連接比較耗時,耗性能,所以相當於用空間換時間
缺點:是如果兩個表數據多,則中間結果集太大,需要較多的內存資源。
2、 $result = SELECT id FROM table_A;
$data=array();
foreach($result as $res){
$data[]=SELECT * FROM table_B WHERE id = $res[‘id’];
}
優點:
缺點:需要打開多次數據庫連接,關閉數據庫連接,比較耗性能,耗時,比如:數據庫連接池有100個連接的話,這個循環就會佔據很多連接,導致其他人需要重新new
優點:需要對每一次查詢的結果做處理的話,可以增加靈活性
3、$result = SELECT id FROM table_A
$ids = array();
foreach($result as $res){
$ids[]=$res[‘id’];
}
$ids = implode(“,”,$ids):
$data=SELECT * FROM table_B WHERE id IN ($ids);
缺點:in的話,每次都會遍歷一遍ids,效率會很慢,並且in在用子查詢到的時候不支持索引,會進行全表掃描
優點:當數據量非常少,少到不需要使用索引的時候,執行全表掃描的更快
delimiter $$ #創建一個儲存過程
create
procedure
test()
begin
set
@a=1;
#學號
while @a<20000 do #如果@a<2000010001則返回
true
,繼續執行
insert
into
user_core
values
(@a);
set
@a=@a+1;
end
while;
end
$$
delimiter ;