关于Mysql模糊查询的优化-全文检索和Like的使用

表A: CREATE TABLE `tableA` ( `id` int(11) NOT NULL auto_increment, `content` varchar(256) default NULL, PRIMARY KEY (`id`), 如果我要在content中进行模糊查询,那么使用like的话,肯定要这样写: select * from tableA from content like “%xxx%” 这里有个问题,即使我为content加了index索引,那么在下面这两种情况索引也是无效的 content like “%xxx” / like “%xxx%” 都不能使用索引 如果想索引作用只能使用content like “xxx%” 这时候就要使用全文索引来处理了 ALTER TABLE `tableA` ADD FULLTEXT `fidx_content` (`content`) 然后用以下方式查询 SELECT * FROM `tableA` WHERE MATCH(c

查看更多

Mysql全文搜索match against的用法

对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后全文检索在 MySQL 中就是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、 VARCHAR 或 TEXT 列上创建再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。 1.使用Mysql全文检索fulltext的先决条件 表的类型必须是MyISAM 建立全文检索的字段类型必须是char,varchar,text 2.建立全文检索先期配置 由于Mysql的默认配置是索引的词的长度是4,所以要支持中文单字的话,首先更改这个. *Unix用户要修改my.cnf,一般此文件在/etc/my.cnf,如果没有找到,先查找一下find / -name ‘my.cnf’ 在 [mysqld] 位置内加入: ft_min_word_len = 2 其它

查看更多

通过shell脚本查看服务器的时时流量

vi network.sh #!/bin/bash ETH=$1 ETH=${ETH:-eth0} IP=`ifconfig $ETH|awk -F ‘[ :]+’ ‘/inet addr/{print $4}’` while true;do let I+=1 NOW=`date +”%F %T”` TX1=`ifconfig $ETH|grep bytes|awk -F ‘[ :]+’ ‘{print $9}’` RX1=`ifconfig $ETH|grep bytes|awk -F ‘[ :]+’ ‘{print $4}’` sleep 1 TX2=`ifconfig $ETH|grep bytes|awk -F ‘[ :]+’ ‘{print $9}’` RX2=`ifconfig $ETH|grep bytes|awk -F ‘[ :]+’ ‘{print $4}’` let TX=(TX2-TX1)/1024 let RX=(RX2-RX1)/1024 let TX_TOTAL+=$TX let RX_TOTAL+=$RX let TX_AVERAGE=TX_TOTAL/$

查看更多

mysql性能优化

网上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与负责,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果,因此简单地根据某个给出方案来配置mysql是行不通的,最好能使用status信息对mysql进行具体的优化,网上找了一篇文章,分页分得乱七八糟的,只能转到博客。 mysql> show global status;   可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句: mysql> show variables; 一、慢查询 mysql> show variables like ‘%slow%’; +——————+——-+ | Variable_name  | Value | +——————+——-+ | log_slow_qu

查看更多

Ubuntu 12.04 LTS 中文输入法的安装

我装的是英文版的 Ubuntu12.04,如果安装中文版,会自动安装中文输入法,这篇文章也是为了以后重装 Ubuntu 做一个准备 废话不多说,进入正题:   第一步:安装语言包   进入 “System Settings” 找到 “Language Support” 那一项,点击进入 选择 “Install/Remove Languages” 找到 “Chinese (simplified)” 那一项,把后面到勾打上 然后点击 “Apply Changes” 等待一段时间即可 第二步:安装 Ibus 框架   调出 terminal 终端,输入命令: sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 启动 Ibus 框架,在终端下输入命令:im-switch -s ibus   PS:安装完 Ibus 框架之后,记得重启或者注销系统,要保证更改生效才行哦   第三步:安装拼音引擎   有很多拼音引擎可供选择,一般安装一种就够了,比如我就直接安

查看更多

Nginx Location配置总结

语法规则: location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。 ~ 开头表示区分大小写的正则匹配 ~*  开头表示不区分大小写的正则匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则 / 通用匹配,任何请求都会匹配到。 多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考): 首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 例子,有如下匹配规则: location = / { #规则A } location = /login { #规则B } location ^~ /static/ { #规则C } location ~ \.(gif|jpg|png|js|css)$ { #规则D } lo

查看更多

Mysql 存储引擎中InnoDB与Myisam的主要区别

1、 事务处理 innodb 支持事务功能,myisam 不支持。 Myisam 的执行速度更快,性能更好。 2、select ,update ,insert ,delete 操作 MyISAM:如果执行大量的SELECT,MyISAM是更好的选择 InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表 3、锁机制不同 InnoDB 为行级锁,myisam 为表级锁。 注意:当数据库无法确定,所找的行时,也会变为锁定整个表。 如: update table set num = 10 where username like “%test%”; 4、查询表的行数不同 MyISAM:select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含   where条件时,两种表的操作是一样的 InnoDB : InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少

查看更多

几种常见的NoSQL数据库关键特性列表

NoSQL根据不同的数据模型,大致可以分为4类,分别是键值对存储(Key-Value Stores),列族存储(Column Families),文档数据库(Document Databases)以及图形数据库(Graph Databases)。四者从容量来讲,依次下降,而从复杂度来说则相反。 下面我根据最近看的一些资料,列出了目前常见的NoSQL数据库系统的一些主要特性,不一定都正确。另外,后面列了一些参考资料,偏向于PostgreSQL,个人觉得还不错。 Google BigTable 由Google开发 闭源产品 通过SSTable实现持久化 通过Chubby实现一致性 key-value存储 HBase Apache基金项目,开发语言为Java Apache License 2.0 许可 Google BigTable的开源版本 为Hadoop的后端数据库 通过HTTP REST,使用JSON协议通信 着重于CP 通过memtable/SStable实现持久化 通过ZooKeeper实现一致性 支持多主节点(multi-master) Hypertable 由Inkomi公司前

查看更多

PHP的生命周期

一个PHP实例,无论是从init脚本中调用的,还是从命令行启动的,都会向我们上一节说的那样, 依次进行Module init、Request init、Request Shutdown、Module shutdown四个过程, 当然之间还会执行脚本自己的逻辑。 那么两种init和两种shutdown各会执行多少次、各自的执行频率有多少呢? 这取决与PHP是用什么sapi与宿主通信的。最常见的四种方式如下所列: ·直接以CLI/CGI模式调用 ·多进程模块 ·多线程模 ·Embedded(嵌入式,在自己的C程序中调用Zend Engine) 1、CLI/CGI CLI和CGI的SAPI是相当特殊的,因为这时PHP的生命周期完全在一个单独的请求中完成。虽然简单,不过我们以前提过的两种init和两种shutdown仍然都会被执行。图1.1展示了PHP在这种模式下是怎么工作的。 2、多进程模式 [ps:书是2006年出版的,所以你应该理解作者说多进程是主流] PHP最常见的工作方式便是编译成为Apache2 的Pre-fork MPM或者Apache1 的APXS 模式,其它web服务器也大多

查看更多

php闭包

php闭包和js闭包写法有点不同: $x = ‘b’; php闭包的写法是 $a = function() use($x){};   其中,“}”后边必须加“;”。(PHP闭包中use()中的参数,只有在闭包前定义才生效) js闭包是 var a = function(){} 就可以了。

查看更多