試試你對MySQL預處理語句知道多少?

MySQL 編程語言 PHP 腳本語言 web情報站 2017-06-20

在MySQL裡面,預處理語句也是一種提高性能的方案,但是不是所有的場景都是可以用預處理語句的,下面就來測試一下你對MySQL預處理語句知道多少?
MySQL預處理語句僅僅執行一次對相應SQL語句的解析嗎?
  • 不是
一般SQL語句的執行過程是什麼?
  • 語法分析-》權限分析-> 選擇最佳執行方案-》執行SQL語句
  • 語法分析-》權限分析-》執行SQL語句
對於加入預處理之後,SQL語句的執行過程是什麼?
  • 如果被預處理過 -》綁定查詢變量值 -》執行SQL語句
  • 如果被預處理過 -》訪問權限 -》 綁定查詢變量值 -》執行SQL語句
從前面的題目可以看到,預處理為什麼可以優化SQL?
  • 減少SQL語句執行步驟
  • 自己提供了優化SQL語句的算法
MySQL預處理語句為什麼可以防止SQL注入?
  • 因為它將SQL語句和數據分開了,這樣不滿足條件的數據傳進去就直接報錯
  • 因為它自己會轉義不合法的數據
客戶端(C或者PHP等)需要每次傳遞SQL語句到MySQL服務端嗎?
  • 不需要
  • 需要
下面那個項目場景非常適合用預處理語句?
  • 定時執行腳本完成某個統計功能
  • 修改用戶名
預處理語句越多越好嗎?
  • 不是,因為它會佔用內存,所以用max_prepared_stmt_count這個配置來避免拒絕服務攻擊
傳遞進去的參數值是否可以包括未轉義SQL引號和分隔符?
  • 可以
  • 不可以
MySQL預處理是否支持多個SQL語句?
  • 不支持
  • 支持
php的PDO可以用那個來實現發送大數據到MySQL端
  • PDO::PARAM_LOB,以流的方式傳遞
  • PDO::PARAM_STR

相關推薦

推薦中...