10/10/2018, 13:21
Tối ưu khi SELECT từ nhiều bảng có số record lớn
Mình dùng câu lệnh trên để lấy ra toàn bộ thông tin bài viết và tên người post bài, nhưng khi bảng posts lên đến gần 100k thì xử lý chậm quá. Các anh em xem có giải pháp nào hay chỉ cho mình với
Code:
Mình post câu SQL mà nó cứ báo là link, không cho post :|, các bạn vui lòng xem câu lệnh ở chỗ lý do sửa nhé :(
Bài liên quan
- - - Updated - - -
Dùng inner join cải thiện thêm 1 chút đi bác ơi
- - - Updated - - -
Thêm SELECT TOP n gì đó cũng hay đấy bác. Nếu không cần hiển thị hết
- - - Updated - - -
- - - Updated - - -
- Query 1 ở bảng post có phân trang
- Query 2 ở bảng user điều kiện là USERID = ( dữ liệu lấy từ query 1 ) xuống duyệt = vòng lặp
--> Như thế 2 bảng không bị đem trộn với nhau và tăng hiệu suất
- - - Updated - - -
Thế thì bạn tách làm 2 query
- Query 1 ở bảng post có phân trang
- Query 2 ở bảng user điều kiện là USERID = ( dữ liệu lấy từ query 1 ) xuống duyệt = vòng lặp
--> Như thế 2 bảng không bị đem trộn với nhau và tăng hiệu suất
- - - Updated - - -
create procedure posts_page(@page int)
begin
select * into @temp from posts order by add_time desc limit @page,10;
select * into @users from members where USERID in(select USERID from @temp);
select A.*,B.username from @temp as A inner join @users as B where A.USERID=B.USERID;
end;
- - - Updated - - -
sao không dùng procedure
create procedure posts_page(@page int)
begin
select * into @temp from posts order by add_time desc limit @page,10;
select * into @users from members where USERID in(select USERID from @temp);
select A.*,B.username from @temp as A inner join @users as B where A.USERID=B.USERID;
end;
- - - Updated - - -
sao không dùng procedure
create procedure posts_page(@page int)
begin
select * into @temp from posts order by add_time desc limit @page,10;
select * into @users from members where USERID in(select USERID from @temp);
select A.*,B.username from @temp as A inner join @users as B where A.USERID=B.USERID;
end;