select * from tableA from content like "xxx%" mysql 貌似只有这样一种like方式可以使用索引。 即使全文索引了,也有好多限制,自己得根据自己数据库的实际情况多分析下fulltext大概是这样工作的, 1、FULLTEXT 索引仅可用于 MyISAM 表 2、利用MATCH (col1,col2,...) AGAINST ('被检索字符串')进行查询eg; 1、给表增加一个全文索引列 ALTER TABLE `text` ADD FULLTEXT `fidx_title` (`title`) 2、执行查询 SELECT * FROM `text`WHERE MATCH (title)AGAINST ('ddd')在难的我就不会了。。
fulltext后在1秒内 没有10秒+
没有用 2利用MATCH (col1,col2,...) AGAINST ('被检…… 也在一内内完成。。 怎么回事?
那你确认 MyISAM 能满足你的要求哈
用MyISAM会怎么样呢? 本来1G的 一用后大小反而降到700M了。。求用MyISAM后的弊端
只有fulltext查询了。mysql一到一定的大小,就奇慢无比。
复制粘帖一下,其实完全可以自行GG,主要是 事务你要不要...innodb InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,一般为 2 GB。 InnoDB所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。 MyISAM MyISAM 是MySQL缺省存贮引擎 .每张MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。因为MyISAM相对简单所以在效率上要优于InnoDB..小型应用使用MyISAM是不错的选择.MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦以下是一些细节和具体实现的差别:1.InnoDB不支持FULLTEXT类型的索引。 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。 3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。 4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。 5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
$sqll = mysql_query($sql);
list($num) = mysql_fetch_row($sqll);可能会快一点
和primary key, index, unique这些索引是一样的,fulltext也是一种索引类型,叫做全文索引,alter table去改一下,自己百度一下怎么使用全文索引搜索关键字。
mysql 貌似只有这样一种like方式可以使用索引。
即使全文索引了,也有好多限制,自己得根据自己数据库的实际情况多分析下fulltext大概是这样工作的,
1、FULLTEXT 索引仅可用于 MyISAM 表
2、利用MATCH (col1,col2,...) AGAINST ('被检索字符串')进行查询eg;
1、给表增加一个全文索引列
ALTER TABLE `text` ADD FULLTEXT `fidx_title` (`title`)
2、执行查询
SELECT * FROM `text`WHERE MATCH (title)AGAINST ('ddd')在难的我就不会了。。
也在一内内完成。。 怎么回事?
那你确认 MyISAM 能满足你的要求哈
本来1G的 一用后大小反而降到700M了。。求用MyISAM后的弊端
InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,一般为 2 GB。
InnoDB所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。
MyISAM
MyISAM 是MySQL缺省存贮引擎 .每张MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。因为MyISAM相对简单所以在效率上要优于InnoDB..小型应用使用MyISAM是不错的选择.MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦以下是一些细节和具体实现的差别:1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。