mysql 220k 数据行时, count() 很慢, 要2s多
问 deepseek “mysql innodb 20万行, 使用 select count(*) from tablea; 耗时2s, 正常吗” 答: mysql innodb 的查询行数是全表扫描, 而 myisam 是直接存储了数量, 可通过加大 innodb_buffer_pool_size 的值来加速, innodb_buffer_pool_size 一般默认为 128M, 现在 改为 4G, 速度变成了 0.2s 查询当前 mysql 的 innodb_buffer_pool_size 值 sql: SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; my.ini(windows) 或 my.cnf(linux) 的 [mysqld] 下 修改 my.ini(my.cnf) 配置文件修改(重启后生效) [mysqld] innodb_buffer_pool_size = 4G 临时修改(重启后失效) SET GLOBAL innodb_buffer_pool_size = 4294967296; # 4G 如果是在 docker compose 中改了配置文件, 需要重新 build image # 在 docker-compose.Sql Count With Condition
多表 left join 后, 使用 count 查询需要使用 distinct, 如果 count 里需要再次添加条件, 使用 distinct if(…) # 不做聚合查询 select company.id as company_id, company.name as company_name, vacancy.id as vacancy_id, vacancy.name as vacancy_name, shop.id as shop_id, shop.shop_name as shop_name, course.id as course_id, course.title as course_name from tb_company company left join tb_position vacancy on vacancy.company_id = company.id left join tb_shop shop on shop.company_id = company.id left join tb_shop_curriculum course on course.shop_id = shop.id where (vacancy.查询字段是否含有中文
SELECT col FROM table WHERE length(col)!=char_length(col) 通过查询长度和字符个数是否相等, 相等则不包含中文, 不相等则包含中文 原文见cnblogmysqldump备份时出错
mysqldump备份时出现 couldn’t find table 或 Got error: 1049: Unknown database 错误 原因可能是, 在命令行的末尾不能加入 分号 原因是通过DOS运行mysql命令的情况下,相当于没有进入mysql环境,不能再在命令行结束处加分号;,直接属于命令行即可! 原文见: https://blog.csdn.net/song19890528/article/details/9620981数据库事务四大特性
数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做要么全不做,是一个不可分割的工作单位。 数据库事务的四大特性(简称ACID)是: (1) 原子性(Atomicity) 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。 例如银行取款事务分为2个步骤(1)存折减款(2)提取现金。不可能存折减款,却没有提取现金。2个步骤必须同时完成或者都不完成。 (2)一致性(Consistency) 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。 例如完整性约束a+b=10,一个事务改变了a,那么b也应随之改变。 (3)分离性(亦称独立性Isolation) 分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。 (4)持久性(Durability) 持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,即对已提交事务的更新能恢复。持久性通过数据库备份和恢复来保证。 原文地址: http://blog.csdn.net/wolenski/article/details/7980521mysql语句分类-DML-DDL-DCL
DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL(data definition language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 DCL(Data Control Language): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCLmysql-group-by-having-查询时别名
select deptname,count(*) as ‘专业个数’ from class group by deptname having 专业个数>1; having后面的别名不能用引号mysql-数值类型指定宽度
mysql 数值类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。 但是这里的(4) 需要和 zerofill 一起用, 否则不会有效果. 当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。 如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性。mysql-复制表结构
实例: mysql>create database db2018 charset=utf8 collate utf8_general_ci; mysql>create table tb1(id int,name varchar(20)) engine=myisam charset=utf8; 创建一个临时表tbtemp,结构与tb1一致 mysql>create table tbtemp like tb1;MySQL查看当前数据库database【三种方法】
在MySQL下查看当前使用的是哪个数据库,有三种方式 (1)用select database()语句 mysql> select database(); +————+ | database() | +————+ | test | +————+ 1 row in set (0.00 sec) 从查询结果中可以看出,当前用的是test数据库 (2)用show tables语句,查询出来的结果中,第一行为Tables_in_XXX,这里XXX就 是当前所用的数据库名称。 mysql> show tables; +——————-+ | Tables_in_test | +——————-+ | push_test | | ship_order_detail | +——————-+ 2 rows in set (0.00 sec) 从查询结果中可以看出,当前用的是test数据库。 (3)用status语句,查询出来的结果中有一行是currrent database: XXX。这里XXX就 是当前所用的数据库名称。 mysql> status; mysql Ver 14.14 Distrib 5.1.60, for pc-linux-gnu (i686) using EditLine wrapper Connection id: 1484237 Current database: test Current user: root@localhost SSL: Not in use
Recent Posts
Tags
- apache 4
- axios 1
- benchmark 1
- c 1
- canvas 1
- centos 3
- channel 1
- crontab 1
- css 2
- docker 4
- fail2ban 1
- frp 1
- gin 1
- github 1
- go 26
- goaccess 1
- goroutine 1
- http 1
- https 1
- jetbrains 1
- jquery 1
- js 2
- linux 20
- mermaid 1
- mysql 10
- nginx 3
- node 1
- php 43
- prisma 1
- react 8
- server 1
- ssh 2
- tarojs 1
- tcp/ip 1
- token 1
- ubuntu 1
- ufw 1
- unit-test 1
- vmware 1
- vscode 1
- vue 12
- yum 1
- 域名 3
- 安全 2
- 微信 3
- 算法 3