sql count 函數用法


count(*) 會查詢所有記錄數,,包括為null值的數據;

count(column)不會包含 column值為null的情況;

count(1) 和 count(*)相同,,不同的是,,mysql不同的存儲引擎,對count(*)做了不同的優化

阿里開發手冊中,,強制要求用count(*),而不是其他兩種

count(*)是 SQL92 定義的
標准統計行數的語法,跟數據庫無關,跟 NULL 和非 NULL 無關。

 

常用的引擎為InnoDB和MyISAM

InnoDB ; 支持事務,,,行級鎖  ,必須進行全表掃描,掃描索引值,,非聚簇索引的葉子只保存,數據位置,而聚簇索引包含整行數據,查詢時會找小的索引值進行索引掃描

前提是查詢中不包括where以及group by條件語句;

MyISAM : 不支持事務,。,,表級鎖,,會將每張表的count值,存貯下來,當訪問時,直接返回,但是不能加where(此優化並不會影響數據的准確性,因為他是表級鎖,,並發的修改不會發生))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM