随笔分类 -  Mysql

摘要:Mysql总是通过创建和填充临时表的方式来执行union查询,导致很多优化策略不能在union中采取。 除非确实需要服务器消除重复的行,否则就一定要使用 union all。如果没有 all 关键字,mysql会给临时表加上distinct 选项, 这会导致对整个临时表的数据做唯一性检查。即使有Al 阅读全文
posted @ 2020-01-28 14:08 后山前堂客 阅读(541) 评论(0) 推荐(0)
摘要:group by with rollup,在group by 之上在进行一次汇总 mysql> select coalesce(staff_id,'汇总'), sum(amount) from payment group by staff_id with rollup; + + + | coales 阅读全文
posted @ 2020-01-28 14:06 后山前堂客 阅读(171) 评论(0) 推荐(0)
摘要:确保on或USING子句中上的列有索引。在创建索引的时候需要考虑到关联的顺序。当表A和表B用列c关联的时候,如果优化器的关联顺序是B、A,那就不要在B表的c列上创建索引,没有用的索引会带来额外的负担。一般来说,除非有其他理由,否则只需要在关联顺序中的第二表的对应关联列上创建索引即可。 确保group 阅读全文
posted @ 2020-01-28 13:55 后山前堂客 阅读(221) 评论(0) 推荐(0)
摘要:mysql> explain -> (select first_name,last_name from sakila.actor order by last_name) -> union all -> (select first_name,last_name from sakila.customer 阅读全文
posted @ 2020-01-28 13:10 后山前堂客 阅读(274) 评论(0) 推荐(0)
摘要:-- 如下两种写法等效,一般,通过 exists 的写法更高效mysql> explain select * from sakila.film where film_id in (select film_id from sakila.film_actor where actor_id = 1); + 阅读全文
posted @ 2020-01-28 13:03 后山前堂客 阅读(426) 评论(0) 推荐(0)
摘要:mysql使用某个索引进行范围查询,也就无法使用该所有后续字段进行排序了。 1 支持多种过滤条件 2 避免多个范围条件 对于范围条件查询,mysql无法使用范围列后面的其他索引, 但是对于等“多个等只查询”没有这个限制【in (a,b,c,d...) 是等值操作】 3 优化排序 阅读全文
posted @ 2020-01-28 01:31 后山前堂客 阅读(139) 评论(0) 推荐(0)
摘要:如果创建了索引(A,B),再创建索引(A)就是荣誉索引,因为索引(A)是索引(A,B)的前缀索引,因此索引(A,B)可以当做索引(A)来使用【仅仅针对B Tree索引来讲】 针对InnoDB,ID为主键,索引(A)可当做 (A,ID)来使用,不用再创建索引(A,ID) 表中的索引越多,则insert 阅读全文
posted @ 2020-01-28 01:18 后山前堂客 阅读(248) 评论(0) 推荐(0)
摘要:mysql有两种方式生成有序结果: 通过排序操作 order by 按照索引顺序扫描(explain 出来的type 为 index) 扫描索引本身是很快的,因为只需要从一条索引记录移动到下一条索引记录即可。但是如果索引不能覆盖查询所需的全部列,那就不得不每扫描一条索引记录就得回表查询一次对应的行。 阅读全文
posted @ 2020-01-28 01:12 后山前堂客 阅读(185) 评论(0) 推荐(0)
摘要:6 覆盖索引 【可参考博文 https://www.cnblogs.com/kerrycode/p/9909093.html】 如果一个索引包含所有需要查询的字段,则称之为“覆盖索引”。 使用覆盖索引,只需要扫描索引,而无需回表: 一般索引比数据行数少,若只需要读取索引,则mysql访问数据量会减少 阅读全文
posted @ 2020-01-28 00:24 后山前堂客 阅读(181) 评论(0) 推荐(0)
摘要:评价一个索引是否适合某个查询的“三星系统” 一星:索引将相关的记录存放在一起 二星:索引中的数据顺序和查找中的排列顺序一直 三星:索引中的列包含了查询中的全部列 1 独立的列 “独立的列”:索引列不能是表达式的一部分,也不能是参数的参数,必须将索引列单独放在比较符号的一侧 mysql> select 阅读全文
posted @ 2020-01-27 13:53 后山前堂客 阅读(179) 评论(0) 推荐(0)
摘要:mysql> select * from mem_2b_applet_filter_task order by rand() limit 1\G; 阅读全文
posted @ 2020-01-27 10:15 后山前堂客 阅读(608) 评论(0) 推荐(0)
摘要:-- 在A服务器(不用登陆mysql):导出指定库(db_name)下指定表(table_name)mysqldump -uroot -proot db_name table_name > /tmp/table_name.sql或者 mysqldump -uroot -proot --databas 阅读全文
posted @ 2020-01-26 13:22 后山前堂客 阅读(146) 评论(0) 推荐(0)
摘要:远程连接mysql数据库,查询内容写到本地 mysql -h10.10.10.10 -uroot -proot -Ddbname -e "select * from dbname limit 100" > /tmp/tmp01.txt 阅读全文
posted @ 2020-01-26 13:09 后山前堂客 阅读(548) 评论(0) 推荐(0)
摘要:存储过程案例: -- 使用存储过程查询每个门店的数据 -- 使用 DELIMITER $$ 命令将存储过程语句的结束符号从分号 ; 临时改为两个 $$, -- 使得存储过程体中使用的分号被直接传递到服务器,而不会被mysql客户端解释 DELIMITER $$ DROP PROCEDURE IF E 阅读全文
posted @ 2020-01-22 13:49 后山前堂客 阅读(162) 评论(0) 推荐(0)
摘要:mysql> select table_name, table_rows from information_schema.tables where TABLE_SCHEMA = 'xcdqm'; 阅读全文
posted @ 2019-12-28 14:46 后山前堂客 阅读(1254) 评论(0) 推荐(0)
摘要:mysql> select count(1) from xcdqm_store_purchase_total_amount_streaming into outfile '/tmp/xcdqm_store_purchase_total_amount_streaming.count'ERROR 129 阅读全文
posted @ 2019-12-28 14:34 后山前堂客 阅读(353) 评论(0) 推荐(0)
摘要:条件: 1 本机和腾讯云联通 2 本机和阿里云联通 步骤: 1 通过腾讯云的跳板机,将mysql中某个指定表的数据导出,并下载到本机(~/download),导出脚本如下: mysqldump -uroot -proot db_name table_name > /tmp/table_name.sq 阅读全文
posted @ 2019-12-10 00:12 后山前堂客 阅读(477) 评论(0) 推荐(0)
摘要:前期已经通过msyql客户端(黑窗口)修改了mysql的编码和字符集, mysql中已经可以插入emoji表情,但是通过数据同步(datax),从hive同步emoji表情到mysql报错: 解决方案: -- 修改mysql配置文件 vim /etc/my.cnf -- 添加如下内容 [client 阅读全文
posted @ 2019-12-05 09:26 后山前堂客 阅读(1998) 评论(0) 推荐(0)