簡體   English   中英

用文字快速查詢,但用變量慢查詢

[英]Query fast with literal but slow with variable

我在我的應用程序中為 SQL 服務器使用 Typeorm。 當我通過像connection.query(select * from user where id = 1)這樣的本機查詢時,性能非常好,不到 0.5 秒。

如果我們使用findoneQueryBuilder方法,大約需要 5 秒才能得到響應。

在進一步調試中,我們發現像這樣直接將值傳遞給查詢,

return getConnection("vehicle").createQueryBuilder() 
                               .select("vehicle")
                               .from(Vehicle, "vehicle") 
                               .where("vehicle.id='" + id + "'").getOne();

return getConnection("vehicle").createQueryBuilder() 
                               .select("vehicle")
                               .from(Vehicle, "vehicle") 
                               .where("vehicle.id =:id", {id:id}).getOne();

我們可以做任何優化來解決參數化查詢的問題嗎?

我不知道 Typeorm,但在我看來區別很明顯。 在一種情況下,您在數據庫中查詢整個表並在本地對其進行過濾,而在另一種情況下,您將過濾器發送到數據庫並在將數據發送回客戶端之前過濾數據。

根據表的大小,這會產生很大的影響。 考慮從 1000 萬條記錄中挑選一條記錄。 僅將數據傳輸到本地機器的時間就慢了 1000 萬倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM