检索表中记录数的MySQL命令是什么?
答案 0 :(得分:212)
答案 1 :(得分:58)
因为没有人提到它:
show table status;
列出所有表格以及一些其他信息,包括每个表格的估计行数。这就是phpMyAdmin用于其数据库页面的内容。
此信息可在MySQL 4中获得,可能在MySQL 3.23中也是如此 - 很久以前的信息模式数据库。
<强>更新强>
由于投票不足,我想澄清所显示的数字仅针对InnoDB和TokuDB进行估算,对MyISAM和Aria(Maria)存储引擎来说绝对正确。
这也是查看MySQL行数的最快方法,因为查询如下:
select count(*) from table;
执行全表扫描可能是非常昂贵的操作,在大型高负载服务器上可能需要数小时。它还会增加磁盘I / O.
相同的操作可能会阻止表进行插入和更新 - 这只发生在异国情调的存储引擎上。
InnoDB和TokuDB可以使用表锁,但需要全表扫描。
答案 2 :(得分:27)
我们还有另一种方法可以查找表中的行数而不在该表上运行select
查询。
每个MySQL实例都有information_schema数据库。如果您运行以下查询,它将提供有关该表的完整详细信息,包括该表中近似行数。
select * from information_schema.TABLES where table_name = 'table_name'\G
答案 3 :(得分:6)
简单地:
SELECT COUNT(*) FROM `tablename`
答案 4 :(得分:5)
select count(*) from YourTable
答案 5 :(得分:2)
$sql="SELECT count(*) as toplam FROM wp_postmeta WHERE meta_key='ICERIK' AND post_id=".$id;
$total = 0;
$sqls = mysql_query($sql,$conn);
if ( $sqls ) {
$total = mysql_result($sqls, 0);
};
echo "Total:".$total;`
答案 6 :(得分:2)
做一个
com.google.cloud.translate.TranslateException: The request is missing a valid API key.
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:61)
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:144)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:113)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:110)
at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:89)
at com.google.cloud.RetryHelper.run(RetryHelper.java:74)
at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:51)
at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:110)
at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:124)
at orderFullfilment.EventDriver.main(EventDriver.java:138)
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "The request is missing a valid API key.",
"reason" : "forbidden"
} ],
"message" : "The request is missing a valid API key.",
"status" : "PERMISSION_DENIED"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:130)
... 8 more
您可以使用之后的位置指定条件
SELECT COUNT(*) FROM table;
答案 7 :(得分:2)
如果您的表中有多个字段且表格很大,那么不要使用 *
会更好,因为它会将所有字段加载到内存中并使用以下内容会有更好的性能
SELECT COUNT(1) FROM fooTable;
答案 8 :(得分:1)
如 Santosh 所述,我认为此查询速度很快,而不会查询所有表。
要返回数据记录数的整数结果,对于特定数据库中的特定表名:
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
答案 9 :(得分:0)
如果您有主键或唯一键/索引,则可能是更快的方法(已对400万行表进行了测试)
SHOW INDEXES FROM "database.tablename" WHERE Key_Name=\"PRIMARY\"
然后获取基数字段(接近即时)
从0.4s到0.0001ms的时间
答案 10 :(得分:0)
可以方便地按索引字段选择计数和过滤器。试试这个
EXPLAIN SELECT * FROM table_name WHERE key < anything;
答案 11 :(得分:-3)
这是一个特例。如果您从不删除表中的数据,则只需使用auto_increment
id
列来计算行数。将数据插入此表时,请确保未手动设置id
。此操作仅需要几毫秒。
SELECT id FROM table ORDER BY id DESC LIMIT 1;