PostgreSQL中varchar类型like前置%查询命中索引的方法

上一篇中,我们学习了PostgreSQL中想要让varchar类型支持like查询能够命中索引,需要注意的地方。但是即便是创建索引时,指定了操作符类varchar_pattern_ops,在使用like查询的时候,还是只能保证sometext%这种查询能够命中索引,但是%sometext这种是无能为力的,见下图。


所以如果需要支持%sometext方式的索引查询,还需要再做点工作:

阅读全文

PostgreSQL中varchar类型支持like查询索引

之前在使用PostgreSQL中的varchar类型时想当然的以为用最基本的索引创建语句创建的索引,就支持like查询的。
类似这句:

CREATE INDEX log_action_v_uri_index ON log_action (v_uri);

阅读全文

IntelliJ IDEA中的SQL Explain

善于利用SQLexplainSQL调整优化的必经之路。但是遇到复杂的SQL,查看explain结果也是有点困难的。比如这样的:

好在很多数据库的客户端都提供了图形化的表现形式,比如PostgreSQLpgAdmin4就能看到如下效果:

不过如果有个工具,能够hold住所有主流的关系型数据库的话,就更嗨皮了。答案就是IntelliJ IDEA。如果你还没有尝试过其自带的Database功能的话,推荐现在就试一下。在屏幕右侧应该能找到。

只需要按照向导添加相应的数据库连接就好了。不过这个功能免费的社区版是没有的。
创建完数据库链接后,通过此按钮打开SQL Console窗口

然后在里面就可以愉快的编写SQL了。
先来一段:

现在我们可以尝试通过IntelliJ IDEA执行一次explain了。

阅读全文

启动Docker容器后要注意的时区问题

对于中国用户来说,一般的docker容器启动后,如果执行docker exec -it xxxx date会发现打印出来的时间,比当前北京时间早八个小时。所以需要调整容器的时区,主要有两个命令(要在容器内部执行):

  • cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

阅读全文

tomcat中URL中文乱码问题

找到

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />

阅读全文

被忽略的IntelliJ IDEA常用快捷键

  • 跳转到方法声明处 (Go to declaration) ⌘B
  • 快速查看声明(Open quick definition lookup)⇧⌘I
  • 快速查看文档(Quick documentation lookup)^J
  • 块级注释(Comment/uncomment with block comment)^⇧/

阅读全文

制作macOS启动U盘命令

sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ High\ Sierra.app --nointeraction

阅读全文

编写跨操作系统Java代码时动态获取文件分隔符

大概有以下几种思路

  1. File.separator系统相关的默认名称分隔符,为方便起见,表示为字符串。 该字符串包含单个字符,即separatorChar。

阅读全文

linux免密登录不起作用解决办法

已经把公钥添加到~/.ssh/authorized_keys文件之后,有时候依然无法实现免密码登录。后来才发现,是因为有些文件的权限放大了。想想也是,如果authorized_keys文件,是其他用户也能编辑的。那岂不是多了个后门,可以帮助其他用户绕到当前用户了。
所以重点在于几个关键文件是否把权限集中在自己手上,并且无论如何是不允许其他用户编辑的。
总结为以下几条命令

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

阅读全文

小诗一首

都谓彭城多霾日,

落笔春城溅靛青。

天公莫要惜颜色,

几许蔚蓝伴我行。

——戊戌年六月偶瞥于徐州

阅读全文