随笔分类 - 数据库
摘要:除非特殊情况,否则不要在唯一性太低的字段上面添加索引。 什么叫唯一性太低? 主要是一些表示状态或者类型的字段,例如:性别、是否删除等。 为何? mysql在查询时,会将索引中的键值取出来与内存中页的数据相比较。 但是内存页中数据的顺序与索引中数据的顺序并不是一致的。 假如索引值为“1”,在数据页“a
阅读全文
摘要:全文索引使用倒排索引(inverted index)的方式,将字段中的内容进行分词,存储分词与自身所在位置的映射,从而加快查询效率。 创建索引 CREATE FULLTEXT INDEX full_index_name ON table_name(col_name) [WITH PARSER ngr
阅读全文
摘要:如何发现慢查询SQL -- 修改慢查询时间,只能当前会话有效; set global long_query_time = 1; -- 启用慢查询 ,加上global,不然会报错的; set global slow_query_log = 1; -- 是否开启慢查询; show variables l
阅读全文
摘要:虽然5.7中已经提示过EXTENDED会过时,但是还是可以正常使用的 到了8.0中,已经没有EXTENDED了,可以直接使用EXPLAIN解析sql语句,然后用show warnings输出结果 EXPLAIN select s.* from Student s where s.id in ( se
阅读全文
摘要:生成随机字符串: CREATE FUNCTION `randomString`(`minLength` int,`maxLength` int) RETURNS char(14) CHARSET utf8mb4 COLLATE utf8mb4_general_ci BEGIN declare idx
阅读全文
摘要:1. 复制运行文件 进入Redis安装目录,运行命令 cp src/redis-cli /usr/local/bin cp src/redis-server /usr/local/bin 2. 创建一个目录来存储 Redis 配置文件和数据 mkdir /etc/redis mkdir /var/r
阅读全文
摘要:使用查询语句查询状态 show global variables like '%lower_case%'; 0为区分大小写,1为不区分大小写,会自动将查询表名转为小写 在配置文件mysqld节点下设置参数值 lower_case_table_names = 1 排序规则 mysql的排序规则,末尾通
阅读全文
摘要:临时解决方案 命令行运行 set global log_bin_trust_function_creators=TRUE; 永久解决方案 在配置文件中,[mysqld]节点下,添加配置 log_bin_trust_function_creators = 1
阅读全文
摘要:SELECT id,name,num, @rownum := @rownum +1 AS ranking FROM table t, (SELECT @rownum :=0) r where pid=15 order by num desc
阅读全文
摘要:公司的网站用的是Oracle数据库,最近要导出里面的数据,使用mysql数据库 spool D:\DB\{文件名}.sql set heading off; set echo off; set feedback off; set pages 0; set termout off; set pages
阅读全文
摘要:exec sp_addlinkedserver 'LocalSERVER' ,--别名,自己起一个 '' , 'SQLOLEDB' , 'ip' --远程服务器地址exec sp_addlinkedsrvlogin 'LocalSERVER' , 'false',NULL,'dati2',--用户名...
阅读全文
摘要:批量修改数据库中的字段为随机数时Mysql中的写法:update `t` set col=FLOOR(RAND()*50+1)--取1-50的随机数Sqlsever中的写法:update t set col=ABS(CHECKSUM(NEWID()))%50+1 --取1-50的随机数Sqlseve...
阅读全文
摘要:in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exi...
阅读全文