database

mongo

doc

基本用法

service mongodb restart

shell中启动 mongo

show dbs

use 数据库

help

db

查看表 show collections

查找 db.表.find(条件).limit(n) find里面第一个dict是查询条件,第二个dict是显示哪些列 db.users.find( { age: { $gt: 18 } }, { name: 1, address: 1 } ).limit(5)

查询条件

显示列那边,_id默认为1,其他为0

默认返回20条,有个提示输入it查看更多

mysql

基本用法

service mysql restart

shell中启动 mysql -u用户 -p mysql

show databases;

use 数据库;

查看表 show tables;

查找 select * from XXX where xx=xx limit x;

查看mysql使用的是哪个配置文件

whichi mysqld /usr/sbin/mysqld --verbose --help | grep -A 1 'Default options'

mysql --verbose --help | grep my.cnf

mongo可视化工具

https://robomongo.org

用explain语法分析mysql语句执行,看是否能命中缓存等

就是在正常的sql前面加上explain即可

https://www.sitepoint.com/using-explain-to-write-better-mysql-queries/

海量数据时offset limit的问题

即使字段加索引,如果select多个字段时offset依然会很慢,需要分两步走 先把id查出来,然后根据id用in查属性,这是因为id会命中一些filesort 例如

select a.id, a.attr1, a.attr2 from my_table as a
where a.attr1 = 'xx'
limit 25000000, 10
select a.id from my_table as a
where a.attr1 = 'xx'
limit 25000000, 10

select a.id, a.attr1, a.attr2 from my_table as a
where a.id in (刚刚查出来的)

创建 utf8 数据库

CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Last updated