常见MySQL语句

1.获取表的存储引擎相关信息:show table status like 'tableName';

 

2.检查表错误:check table tableName;

 

3.修复表:repair table tableName ; (MyISAM不支持)。

 

4.表存储引擎的改变:alter table tableName engine=new_engine_name;(转换过程耗时长);

 

5.当查询大于某一个字段的记录的个数时,可以采用采用相反的方法获取。先查询表的总数,然后查询该字段小于等于某个值的总数,两者做减法处理。这样能提高查询效率。ex:select (select count(*) from dm_field)-count(*) from user
where id<=10.查询user中id>10的总数。

 

6. 查询某个字段的某个值的统计个数的查询办法:

select count(alias='标题' or null),count(alias='内容' or null) 
from chapter;

 

select alias,count(alias) from chapter where alias in('标题','内容')
group by alias;

 

 select sum(if(alias='标题' ,1,0),sum(if(alias='内容' ,1,0) ) 
from chapter;

 

 

7.MySQL 全文搜索办法:(有的表不能使用全文索引)

 

7.1 给字段添加全文索引:ALTER TABLE app_book add FULLTEXT KEY(name);

 

7.2 查询:查询app_book中字段为name,description中命中关键词故事的记录。

select id,name from app_book where match(name,description) against ('故事');

 

7.3  布尔全文搜索:

china  含有 china 行排名较高;

~china 含有china 行排名较低;

+china 行必须还有china;

-china 行不含有china;

china* 含有以china打头的行排名较高;

 

ex:select id,name from app_book where match(title,description) against('+china+shenzhen' in boolean mode);

精确匹配词语:select id,name from app_book where match(title) against('"笑傲江湖 金庸"' in boolean mode);//短语搜索非常慢。如果搜索的短语常见 就没有like查询效率高。

 

7.4 在对联接多个表的结果进行全文检索,是很慢的。对全文索引进行添加,修改,删除都是比较慢。全文搜索索引也会引起碎片,影响服务器优化查询语句的方式。

 

7.5 select  * from app_book where match(title) against('china') and id >9;这样的查询性能也很慢。但是可以有变通的方法。

 

 7.6 全文索引采用的是双重平衡树结构(Double B-Tree);

 

7.7 若在导入大量数据并希望使用全文索引,那么在导入数据前,先禁用全文索引。Disable keys ; 导入完毕后再使用enable keys;因为插入每一行都要更新索引,这样还可以避免碎片的产生。

 

8.binlog指定时间范围的日志转化为SQL脚本:

mysqlbinlog  mysql-bin.000009  --start-date="2011-09-15 10:15:00" --stop-date="2011-09-27 10:30:59" >all.sql

 

 

 

你可能感兴趣的:(mysql)