[Hỏi]_Tốc độ lấy dữ liệu từ SQL

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Em chào các anh chị!
Hiện em đang có một vấn đề, mong các anh chị giúp dùm em với
Em có một câu lệnh Query, kết nối tới CSDL SQL để lấy kết quả ra, sau đó đẩy vào mảng, rồi dán vào trong sheet excel

mrs.Open SQry, cnn1
Worksheets("STEP3-1").Range("B3").CopyFromRecordset mrs

Có thấy chỗ nào đẩy vào mảng đâu?

Vấn đề ở đây là, nếu bản ghi ít, thì tốc độ OK, nhưng với dữ liệu bản ghi lớn, thì tốc độ rất chậm
Vậy làm cách nào để tối ưu việc này ạ?

SQL là cái gì? Hiện tại trên thị trường có ít nhất là 3 loại CSDL có tên SQL: MS SQL Server (của Microsoft), mySQL (của Oracle), và NoSQL (nhiều cty). Mỗi loại có cách tối ưu khác nhau.

Bản ghi ít và bản ghi lớn nghĩa là gì?
Số bản ghi trên CSDL (SQL Server?), hay là số bản ghi mà lệnh truy cập được?. Néu là số bản ghi trên CSDL thì phải biết chi tiết của CSDL và câu SQL mới tối ưu được.
Nếu là số bản ghi truy cập được thì phải biết CSDL nằm ở đâu mới tính chuyện tối ưu băng thông đường kết nối.

1. Có thấy chỗ nào đẩy vào mảng đâu?

Xin lỗi bác, em không viết vào đây, ý em là phần này là lâu nhất, còn khi đẩy dữ liệu từ mrs vào mảng thì nhanh ạ

2. SQL là cái gì? Hiện tại trên thị trường có ít nhất là 3 loại CSDL có tên SQL: MS SQL Server (của Microsoft), mySQL (của Oracle), và NoSQL (nhiều cty). Mỗi loại có cách tối ưu khác nhau.

Em dùng MS SQL Server (của Microsoft).

3. Bản ghi ít và bản ghi lớn nghĩa là gì?
Số bản ghi trên CSDL (SQL Server?), hay là số bản ghi mà lệnh truy cập được?. Néu là số bản ghi trên CSDL thì phải biết chi tiết của CSDL và câu SQL mới tối ưu được.
Nếu là số bản ghi truy cập được thì phải biết CSDL nằm ở đâu mới tính chuyện tối ưu băng thông đường kết nối.

Ý em đây là số lượng dòng ấy ạ, em sử dụng câu lệnh Query
Sau đó get ra tầm 500000 dòng có 11 cột.
Thời gian để đẩy vào mrs khá lâu, tầm 30s

Cảm ơn bác đã giúp đỡ

Bạn thử đo thời gian thực hiện mỗi dòng lệnh ở trên xem. ;;;;;;;;;;;

mrs.Open SQry, cnn1

Nếu dòng này chiếm phần lớn thời gian thì bạn nên xem lại SQry.

Worksheets("STEP3-1").Range("B3").CopyFromRecordset mrs

Còn nếu dòng này chiếm nhiều thời gian thì khó có cách nào cải thiện -0-/.

Nói chuyện với bạn đoán mò cực quá.
Với con số dữ kiệu đó, ít nhất bạn phải cho biết CSDL nằm trên cùng máy hay truy cập qua mạng LAN.
500.000 dòng * 11 cột * (trung bình 20 bytes / 1 cột) = 100 Mb
Với đường kết nối bình thường mà SQL Server cho một kết nối thì 30 giây để chuyển ngần ấy dữ liệu đâu phải là lâu.

Nếu dùng SQL Server Management Studio, kết hối thẳng vào và truy xuất thì tốn bao lâu?

www.giaiphapexcel.com/diendan/threads/h%E1%BB%8Fi-_t%E1%BB%91c-%C4%91%E1%BB%99-l%E1%BA%A5y-d%E1%BB%AF-li%E1%BB%87u-t%E1%BB%AB-sql.121538/

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học SprinGO phù hợp

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM

Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm