那就是主表和从表的关联字段的编码方式不一样!!! 晕啊,折腾了半天才发现,可能是不知道啥时候mysql更改主体编码方式了,结果导致后来新建的表的关联字段和之前的主表的字段的编码方式不一样 改成一样的编码方式以后就ok了…
Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字段ishaspic:新添字段时,报错 [SQL] alter table WorkTask add ishaspic int(10) Null;[Err] 1034 - Incorrect key file for table 'WorkTask'; try to repair it 解决方案:新建…
对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引. 问题: 大量的left join 怎么优化 select a.id,a.num,b.num,b.pcs,c.num, c.pcs,d.num,d.pcs,e.num,e.pcs,a.x, a.y from a left join b.id=a.id and b.time=a.time left join c.id=a.id and b.time=a.time left join d.id=a.id and b.time…
不会使用索引,导致全表扫描情况 1.不要使用in操作符,这样数据库会进行全表扫描,推荐方案:在业务密集的SQL当中尽量不采用IN操作符 2.not in 使用not in也不会走索引推荐方案:用not exists或者(外联结+判断为空)来代替 3<> 操作符(不等于) 使用<>同样不会使用索引,因此对它的处理只会产生全表扫描推荐方案:用其它相同功能的操作运算代替,如a<>0 改为 a>0 or a<0 a<>’’ 改为 a>’’ 4.IS…
相信大家在很多实际业务中(特别是后台系统)会使用到各种筛选条件来筛选结果集 首先添加测试数据 ), Age INT) go CREATE INDEX idx_age ON TempList (Age) GO DECLARE @i INT; ; BEGIN INSERT INTO TempList (Name, Age)VALUES(CAST(@i AS VARCHAR),@i) ; END GO 1.有使用EXEC来避免全表扫描 ; DECLARE @sql NVARCHAR(MAX) SET…
目录 一.多表查询的两种方法 方式1:连表操作 inner join(内连接) left join(左连接) right join(右连接) union(全连接) 方式2:子查询 二.小知识点补充说明 1.concat与concat_ws 2.exists 3.表相关SQL补充 三.可视化软件Navicat 1.Navicat简介 2.安装教程 正版教程 破解版教程 3.常用操作 1.连接数据库 2.创建库 3.创建表 4.往表中添加记录 5.设置外键 4.SQL语句注释语法 方式一:-- 方式…
direct path read深入解析 前言 最近碰到一件很奇葩的事情,因为某条SQL执行缓慢,原因是走了笛卡尔(两组大数据结果集),而且笛卡尔还是NL的一个部分,要循环31M次. 很容易发现是统计信息没有导致的,收集完就好了. 结果过了个51假期回来有人反馈其他的SQL慢了,看了下慢的SQL涉及到的表就刚好是上次收集统计信息的表. 统计问题SQL的历史执行情况,发现时间刚好在那天收集完后开始变慢.咋回事. 后边发现慢的原因是对收集的那两张表做全表扫描时候用了直接路径读(DPR).暂定为表A和…
使用过Linux的同志就知道,在Linux下安装mysql,尤其是使用yum安装的时候,我们是没法选择其默认的字符编码方式.这个就是一个比较头痛的问题,如果Linux数据库中使用到中文的时候,乱码问题会让你很头痛.今天就来先说说Linux下怎么设置其默认编码方式. 1.首先中止其mysql服务,需要在root权限下 service mysqld stop 2.在/etc/下面找到my.cnf文件,如果没有,找到mysql的安装目录下的support-files文件夹下的my-medium.cnf…
MySQL多表查询合并结果和内连接查询 1.使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tablename2:   注意这个操作必须保证两张表字段相同,字段数据类型也相同,再针对结果统一排序操作等.另外,使用union的时候会去除重复(相同)的记录?,而union all则不会. create table table_new select * from ( SELECT * FROM DB.…
MYSQl 全表扫描以及查询性能 -- 本文章仅用于学习,记录 一. Mysql在一些情况下全表检索比索引查询更快: 1.表格数据很少,使用全表检索会比使用索引检索更快.一般当表格总数据小于10行并且数据行的长度非常小的时候会使用全表检索;   2.在ON或者WHERE中,没有使用索引列作为查询条件:   3.使用了索引列与一个常量进行比较,但是mysql发现该索引列覆盖的数据太大,反而全表检索更快(一般当索引列覆盖的数据大于全表数据的30%时,会触发mysql使用全表检索);   4.使用了一…