mysql_num_rows VS COUNT(*) 效率问题分析
mysql_num_rows 和 count( * ) 都能统计总数,那个能好一点呢?
或者
分别什么时候用num_rows 和 count( * )呢
一个直观的对比
测试数据:
条数:139764条
数据表大小:500M …
记录-交流-Web开发知识分享
mysql_num_rows 和 count( * ) 都能统计总数,那个能好一点呢?
或者
分别什么时候用num_rows 和 count( * )呢
一个直观的对比
测试数据:
条数:139764条
数据表大小:500M …
innodb引擎在统计方面和myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据。而innodb必须全表扫描一次方能得到总的数量。要初步解决这个问题,需要做不同于myisam的一些工作:
1、使用第二索引(一般不使用主键索引),并且添加where条件,如:
select count(*) from product where comp_id>=0 ;
show index from product ;
id primary key
comp_id index…
假设在127.0.0.1上有test1和test2两个库, 其中库test1库中有test1表,test2中有test2表
<?php //MySQL连接数据库 function db_connmysql($dbpassword,$dbdatabase,$dbhost='localhost',$dbname='root',$dbcharset='UTF8'){ $link = mysql_connect($dbhost, $dbname, $dbpassword) or die(mysql_error()); $dbVersion = mysql_get_server_info($link); //设置字符集 mysql_set_charset($dbcharset,$link); //mysql_query("SET NAMES gb2312", $link);此方式不推荐; //设置 sql_model if($dbVersion >'5.0.1'){ mysql_query("SET sql_mode=''",$link); mysql_query("SET character_set_connection=".$dbcharset.", character_set_results=".$dbcharset.", character_set_client=binary", $link);// 防止宽字节注入 } //选择数据库 mysql_select_db($dbdatabase, $link); //mysql_close($link); } //db_connmysql('password','test');…
由于MySQL扩展从php 5.5开始弃用,所以以后不推荐大家再用MySQL扩展,请用MySQLi或PDO代替,以下是MySQL对应的MySQLi函数(绿色字体)供大家参考。(注:PHP手册上的有误,这里是最准的)
MySQL>>(从PHP 5.5开始弃用)
mysql_affected_rows — (mysqli_affected_rows())取得前一次 MySQL 操作所影响的记录行数
mysql_client_encoding — (mysqli_character_set_name())返回字符集的名称(返回当前连接的默认字符集名称。)
mysql_close — (mysqli_close())关闭 MySQL 连接
mysql_connect — (mysqli_connect())打开一个到 MySQL 服务器的连接
mysql_create_db — (mysqli_query() then CREATE DATABASE)新建一个 MySQL 数据库(…
无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。
一、数字类型
数字类型按照我的分类方法分为三类:整数类、小数类和数字类。…
数据库是Web大多数应用开发的基础。如果你是用PHP,那么大多数据库用的是MySQL也是LAMP架构的重要部分。PHP看起来很简单,一个初学者也可以几个小时内就能开始写函数了。但是建立一个稳定、可靠的数据库确需要时间和经验。下面就是一些这样的经验,不仅仅是MYSQL,其他数据库也一样可以参考。
1.使用MyISAM而不是InnoDB
MySQL有很多的数据库引擎,单一般也就用MyISAM和InnoDB。
刚刚接触mysql的人(like me),可能对这2个概念不是太理解,这里小小解释一下,希望能说明清楚这个问题。
字符集,character set,就是一套表示字符的符号和这些的符号的底层编码;而校验规则,则是在字符集内用于比较字符的一套规则。字符集还是比较容易理解的,主要是校验规则,下面我简单举个例子来说明一下:…
Jaslabs的Justin Silverton列出了十条有关优化MySQL查询的语句,我不得不对此发表言论,因为这个清单非常非常糟糕。另外一个Mike也同样意识到了。所以在这个博客中,我要做两件事情,第一,指出为什么这个清单很糟糕,第二,列出我的清单,希望我的比较好些。继续看吧,无畏的读者们!
(译者注:作者借这个题目反讽另一篇同名的文章)
为什么那个清单很糟糕…
近期评论