在使用Powerdesigner生成sql数据库时,导出的表总是少两个? 你是用ODBC连接的数据库然后生成的吗?建议你还是生成SQL然后用语句去执行建表。看看有没有什么警告或者错误。...name与code同步问题 解决办法:Name和Code 的右侧都有一个按钮“=”,如果需要不同步的话,把这个按钮弹起来就可以了。...,以“强字符串”形式来获取区分大小写,这样给sql语句的编写制造很多麻烦。...选中Generate name in empty comment这时就可以生成带有comments为物理模型中Name属性的SQL语句了。...导出SQL脚本运行注释出现乱码问题 解决办法:乱码自然就是字符集的问题,先检查一下自己数据库的字符集,然后在Database –> Generate Database ,在formata页面中的Encoding
异步线程发送短信 假设由于某些原因,你现在需要做一些监控,比如监控的内容是,你的sms数据表里还有没有state=0(未发送)的短信,方便判断一下堆积的未发送短信大概在什么样的一个量级。...为了获取满足某些条件的行数是多少,我们一般会使用count()方法。 这时候为了获取未发送的短信数据,我们很自然就想到了使用下面的sql语句进行查询。...那如果不可避免要使用count(),有没有办法让它快一点? 各种count()方法的原理 count()的括号里,可以放各种奇奇怪怪的东西,想必大家应该看过,比如放个星号*,放个1,放个索引列啥的。...知道真相的我眼泪掉下来。 那有没有其他更好的办法?...实时性要求较高的场景 如果你对这个cnt计算结果的实时性要求很高,那你需要将更新cnt的sql加入到对应变更行数的事务中。 比如我们有两个事务A和B,分别是增加未发送短信和减少未发送短信。
collation可以被支持 基于以上的问题,我们已经了解到collation的重要性,他是一个规则,满足数据库中表的数据进行比较和排序的重要标记属性。...,两个表在使用了不同的collation 后的在对比字符的比对情况 在我们使用了 utf8mb4_0900_ai_ci 后,我们的字符比对中,大小写英文是等同的,而在使用了utf8mb4_0900_as_cs...2 库级别 3 表级别 4 列级别 5 SQL 级别 那么我们带着以上的层次的问题,来对这些collation进行更替 1 确认当前的数据库服务器的instance 中的collation...上面的列子也说明在一个表中,如果有不同的对于大小写敏感度的不同需要,可以一个表中的不同字段具有不同的collation 。 但是需要注意的,如果有多表连接,则对应的collation必须一致。...letters collate utf8mb4_0900_as_cs from change_letter_ci; 以上两个SQL 可以看出,虽然我们的原有列大小写是不敏感的,但是在我们针对查询中,
A:有些系统确实要求某些关键字采用大写形式,但SQL本身不区分大小写。也就是说,命令不大小写也可以,但命令大小写是良好的SQL编程惯例。 大写让我们很容易分辨命令与数据库名称。...为表插入数据时,可以使用任何一种INSERT语句。 NULL是未定义的值。它不等于0,也不是空值。值可以是NULL,但绝非等于NULL。 没有在INSERT语句中被赋值的列默认为NULL。...是像这样吗? : ? 这样要执行n次啊。。。 那有没有更好的办法,其实在主语言中,这不过就是个分支语句的事情嘛,奈何SQL语言我不熟啊。。。...有办法确定外键已经连接到父键了吗? A:外键为NULL,表示在父表中没有相符的主键。但我们可以确认外键包含有意义、已经存储在父表中的值,请通过约束实现。...如果我们试着删除主键表中的行或者是改变主键值,而这个主键是其他表的外键约束时,你就会收到错误警告。 所以上面说的那种,我就不能删除了是吗? A:还是可以的,先移除外键行即可。
但如果排序数据量太大,内存顶不住,就得磁盘临时文件辅助排序。 当然,在 MySQL5.7 以上版本可以用下面介绍的检测方法(后面都有用到),来查看一个排序语句是否使用了临时文件。...我这里是用了两个,内存放不下时,就使用外部排序,外部排序一般使用归并排序算法。可以这么简单理解, MySQL 将需要排序的数据分成 2 份,每一份单独排序后存在这些临时文件中。...这两种都是因为数据本身是无序的,才要放到 sort_buffer 并生成临时文件才能做排序。 哪有没有办法,让数据本身就有序呢?回想下,我们学过的索引就是有序的。...而且由于 (city,order_num) 这个联合索引本身有序,只要找到满足条件的前 1000 条记录就可以退出了,再回表一次。也就是说,只需要扫描 2000 次。 问题来了,还有没有更优解呢?...where 条件,order by 字段需要加索引吗 日常开发中,可能会遇到没有 where 条件的 order by,这时候 order by 后面的字段是否需要加索引呢。
,但是还有其他的,比如出现顺序调用,那么就是执行两个方法,执行方法a,然后再执行方法B,这种情况也是可以进行优化的。...因为阿粉在之前的文章中已经详细的讲过了,大家如果有兴趣的话,可以翻看一下。 如果你检查过你的代码之后,你发现并没有能出现慢业务的操作,那么接下来就是重头戏了。...:表示慢查询日志存放的位置 explain查看分析SQL执行计划 当我们去定位自己表中增加的索引有没有生效的时候,我们使用的一半都是 explain 关键字,通过关键字给我们返回的内容,我们就能判断我们写的...SQL 有没有命中索引。...,在存储引擎层进行数据过滤,而不是在服务层过滤,利用索引现有的数据减少回表的数据 这个关键字是非常需要大家掌握的,因为能非常准确的反映出你写的 SQL 语句到底有没有命中索引,如果你的 SQL 都没有命中索引的话
「可以看到是有idx_city_id_type和idx_1索引的」,我们的查询条件是city_id和type,这两个索引都是能走到的。 但是,我们的查询条件真的只要考虑city_id和type吗?...(机智的小伙伴应该注意到问题所在了,先往下讲,留给大家思考) 既然有索引,接下来就该看该语句实际有没有走到索引了,MySQL提供了Explain可以分析SQL语句。...而这次代码中查询条件实际结果为空,导致了扫描了全部的主键索引。 解决方案 知道了MySQL为何选择这个索引的原因后,我们就可以根据上面的思路来列举出解决办法了。...干涉优化器选择:写成子查询 还有什么办法?我们可以用子查询,在子查询里先走city_id和type的联合索引,得到结果集后在limit1选出第一条。...SQL优化是个很大的工程,我们还有非常多的办法能够解决这句慢查询问题,这里就不一一展开了。留给大家做为思考题了。
不知道你在实际工作中,有没有遇到过下面的这两种情况: 明明在某个字段上加了索引,但实际上并没有生效。 索引有时候生效了,有时候没有生效。...说明以上3种情况不满足最左匹配原则,说白了是因为查询条件中,没有包含给定字段最左边的索引字段,即字段code。 3....使用了select * 在《阿里巴巴开发手册》中明确说过,查询sql中禁止使用select * 。 那么,你知道为什么吗?...索引列用了函数 有时候我们在某条sql语句的查询条件中,需要使用函数,比如:截取某个字段的长度。...执行结果: 你有没有发现,在使用该函数之后,该sql语句竟然走了全表扫描,索引失效了。 6.
我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在ORM层面,这些查询条件都是使用field+__+condition的方式来使用的。以下将那些常用的查询条件来一一解释。...查询条件 exact 使用精确的=进行查找。如果提供的是一个None,那么在SQL层面就是被解释为NULL。...因此如果你的查询语句是通过get来获取数据的,那么就不能使用query,因为get返回的是满足条件的ORM模型,而不是QuerySet。...而exact翻译成sql语句左右两边是没有百分号的,意味着使用的是精确的查询。 icontains 大小写不敏感的匹配查询。...示例代码如下: articles = Article.objects.filter(id__in=[1,2,3]) 也可以通过其他的表的字段来判断是否在某个集合中。
可以看到是有idx_city_id_type和idx_1索引的,我们的查询条件是city_id和type,这两个索引都是能走到的。 但是,我们的查询条件真的只要考虑city_id和type吗?...(机智的小伙伴应该注意到问题所在了,先往下讲,留给大家思考) 既然有索引,接下来就该看该语句实际有没有走到索引了,MySQL提供了Explain可以分析SQL语句。...而这次代码中查询条件实际结果为空,导致了扫描了全部的主键索引。 解决方案 知道了MySQL为何选择这个索引的原因后,我们就可以根据上面的思路来列举出解决办法了。...干涉优化器选择:写成子查询 还有什么办法?我们可以用子查询,在子查询里先走city_id和type的联合索引,得到结果集后在limit1选出第一条。...`af_hot_price_region` where (city_id = 565 and type = 13)) limit 0, 1 还有很多解决办法… SQL优化是个很大的工程,我们还有非常多的办法能够解决这句慢查询问题
博主猫头虎的技术世界 欢迎来到猫头虎的博客 — 探索技术的无限可能! 前言 不知道你在实际工作中,有没有遇到过下面的这两种情况: 明明在某个字段上加了索引,但实际上并没有生效。...说明以上3种情况不满足最左匹配原则,说白了是因为查询条件中,没有包含给定字段最左边的索引字段,即字段code。 3....使用了select * 在《阿里巴巴开发手册》中明确说过,查询sql中禁止使用select * 。 那么,你知道为什么吗?...索引列用了函数 有时候我们在某条sql语句的查询条件中,需要使用函数,比如:截取某个字段的长度。...执行结果: 你有没有发现,在使用该函数之后,该sql语句竟然走了全表扫描,索引失效了。 6.
看到这里,不知道聪明的你,有没有发现这样一个规律:****这4条sql中都有code字段,它是索引字段中的第一个字段,也就是最左边的字段。只要有这个字段在,该sql已经就能走索引。...说明以上3种情况不满足最左匹配原则,说白了是因为查询条件中,没有包含给定字段最左边的索引字段,即字段code。 3....使用了select * 在《阿里巴巴开发手册》中明确说过,查询sql中禁止使用select * 。 那么,你知道为什么吗?...索引列用了函数 有时候我们在某条sql语句的查询条件中,需要使用函数,比如:截取某个字段的长度。...执行结果: 你有没有发现,在使用该函数之后,该sql语句竟然走了全表扫描,索引失效了。 6.
试想一下,如果有并发的另外一个SQL,是直接通过主键索引id=30来更新,会先在聚集索引中请求加锁。如果只在辅助索引中加锁的话,两个并发SQL之间是互相感知不到的。...当concurrent_insert设置为2时,无论MyISAM表中有没有空洞,都允许在表尾并发插入记录。...如果事务需要修改或锁定多个表,则应在每个事务中以相同的顺序使用加锁语句。...当前系统的隔离级别是什么? id列如果不是主键,那么id列上有索引吗? id列上如果有二级索引,那么这个索引是唯一索引吗? 两个SQL的执行计划是什么?索引扫描?全表扫描?...此时SQL:delete from t1 where id = 10; 没有其他的路径可以选择,只能进行全表扫描。
在嵌入式SQL中,这是一个使用SQL游标通过FETCH语句访问多行数据的SELECT语句。使用SELECT语句SELECT语句从一个或多个表或视图中选择一行或多行数据。...可以使用字母大小写的任意组合来指定选择项目的字段名称,并且InterSystems SQL将标识相应的相应属性。...可以使用字母大小写的任意组合来引用列别名(例如,在ORDER BY子句中),并且InterSystems SQL解析为select-item字段中指定的字母大小写。...但是,如果SELECT指定fAmILyNaMe且对应的属性为Familyname,则InterSystems SQL必须使用较慢的字母大小写转换过程来解析字母大小写。...在SQL中,JOIN是一种操作,它将来自两个表的数据合并以产生第三个表,但要遵守限制性条件。结果表的每一行都必须满足限制条件。
可以看到是有idx_city_id_type和idx_1索引的,我们的查询条件是city_id和type,这两个索引都是能走到的。 但是,我们的查询条件真的只要考虑city_id和type吗?...(机智的小伙伴应该注意到问题所在了,先往下讲,留给大家思考) 既然有索引,接下来就该看该语句实际有没有走到索引了,MySQL提供了Explain可以分析SQL语句。...而这次代码中查询条件实际结果为空,导致了扫描了全部的主键索引。 解决方案 知道了MySQL为何选择这个索引的原因后,我们就可以根据上面的思路来列举出解决办法了。...干涉优化器选择:写成子查询 还有什么办法?我们可以用子查询,在子查询里先走city_id和type的联合索引,得到结果集后在limit1选出第一条。...SQL优化是个很大的工程,我们还有非常多的办法能够解决这句慢查询问题,这里就不一一展开了。留给大家做为思考题了。
/question/1094 1.2 能否在一个查询中 查询两个条件 在对两个结果进行除法计算?...请教各位一个问题,我们有一个场景,想通过1个查询语句,计算两个查询结果的除法, 比如,我有一个查询条件,用 idc: "BJ" 能统计出有100条数据符合要求 , 第二个条件 idc: "SH",能统计出有...,,如果一定要使用大写查询的话,可以自定义 1.14 关于translog和线程池拒绝 比如提交bulk,请求写入了translog,但是由于服务器压力大,线程池拒绝了这个请求,那translog还有用吗...2 Logstash 2.1 logstash 批量接收数据 在logstash 中有没有办法使用 avro 接收数据,或者有没有其他方案能够接收flume 的avro sink 发来的数据 实现: input...,就要做一些其他的操作,不知道有没有什么方案,类似监听elasticsearch数据是否更新、增加的机制来实现 解决方案:elasticsearch alert有类似功能,可以看一下。
,可以使用DESC设置降序排列 select * from user order by classid,age DESC 以上语句就是先对classid进行升序排序,然后在结果中对age进行降序排序...这时,SQL语句变成了获取18期或19期的学员并且要求是女生 IN与NOT IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。...如果其他操作符能达到相同的目的,应该使用其他操作符。 + 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。 + 把通配符置于搜索模式的开始处,搜索起来是最慢的。...但此新计算列的名字是什么呢?实际上它没有名字,它只是一个值。 > >如果仅在SQL查询工具中查看一下结果,这样没有什么不好。...> >但是,一个未命名的列不能用于客户机应用中,因为客户机没有办法引用它。 > >为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值的替换名。
所以在学习的过程中, 读者要多编写 SQL 语句,对于同一个功能,使用不同的实现语句来完成,从而深刻理解其不同之处。...如果条件较多,即使能确定计算次序,默认的计算次序也可能会使 SQL 语句不易理解,因此使 用括号明确操作符的次序,是一个好的习惯。 10、更新或者删除表时必须指定 WHERE子 句吗?...函数可以嵌入在 SQL 语句中使用,可以在 SELECT 语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 14、存储过程中的代码可以改变吗?...存储过程包含用户定义的 SQL 语句集合,可以使用 CALL 语句调用存储过程,当然在存储 过程中也可以使用 CALL 语句调用其他存储过程,但是不能使用 DROP 语句删除其他存储过程。...只有在查询语句中包含 SQL_NO_CACHE 关键字 时,才不会使用查询缓冲区。可以使用 FLUSH QUERY CACHE 语句来刷新缓冲区,清理查询缓冲区中的碎片。
注意: 在多个列上降序排序 如果想在多个列上进行降序排序,必须 对每个列指定DESC关键字。 区分大小写和排序顺序 在对文本性的数据进行排序时,A与 a相同吗?a位于B之前还是位于Z之后?...可以看到这里显示的是is,而不是==,至于为什么可以查看我的整理1800篇sql语句中查看。 NULL与不匹配 在通过过滤选择出不具有特定值的行时,你 可能希望返回具有NULL值的行。但是,不行。...不要 过分依赖默认计算次序,即使它确实是你想要的东西也是如 此。使用圆括号没有什么坏处,它能消除歧义。 下面介绍一下in 操作符: 圆括号在WHERE子句中还有另外一种用法。...IN操作符用来指定条件范 围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清 单,全都括在圆括号中。... IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建 立WHERE子句。
所以, 使用这种方法创建实例,最后一定要调用 save() 函数。 另外上述方法来创建实例,另外还有 3 种方法: 1)方法2 这种办法可以算是方法 1 的变形。...Publisher.objects.filter(address__contains='北') # 还有很多不一一例举 # 如果上述条件的前面有个字母 'i', 表示不区分大小写 # 正则表达式,...语法中的组合查询,具体用法如下: # 查询结果中同时满足 name=清华大学出版社 和 address=上海, 这两个条件 Publisher.objects.filter(name="清华大学出版社...").filter(address="上海") # 查询结果中同时满足 name=清华大学出版社 和 address 不是上海, 这两个条件 # exclude() 函数排除指定的内容 Publisher.objects.filter...(name="清华大学出版社").exclude(address="上海") 6.4 其他 前面说到切片操作的区间是从整数到无穷大的,在Python 语法中还有负查询,即区间是从负无穷大到 0。
领取专属 10元无门槛券
手把手带您无忧上云