1、LOWER(column|str):将字符串参数值转换为全小写字母后返回
mysql> select lower(‘SQL Course’);
+———————+
| lower(‘SQL Course’) |
+———————+
| sql course |
+———————+
我喜欢这样自由的随手涂鸦,因为我喜欢风……
mysql> select lower(‘SQL Course’);
+———————+
| lower(‘SQL Course’) |
+———————+
| sql course |
+———————+
在使用Redis过程中,我们发现了不少Redis不同于Memcached,也不同于MySQL的特征。
(本文主要讨论Redis未启用VM支持情况)
1. Schema
MySQL: 需事先设计
Memcached: 无需设计
Redis: 小型系统可以不用,但是如果要合理的规划及使用Redis,需要事先进行类似如下一些规划
数据项: value保存的内容是什么,如用户资料
Redis数据类型: 如String, List
数据大小: 如100字节
记录数: 如100万条(决定是否需要拆分)
⋯⋯
上面的规划就是一种schema,为什么Redis在大型项目需要事先设计schema?因为Redis服务器有容量限制,数据容量不能超出物理内存大小,同时考虑到业务数据的可扩充性,记录数会持续增多、单条记录的内容也都会增长,因此需要提前规划好容量,数据架构师就是通过schema来判断当前业务的Redis是否需要“分库分表”以满足可扩展需求。 继续阅读“Redis容量及使用规划”
一下子从Mysql5.1 手动升级到5.7.9,然后用Navicat进行查询时,却提示错误:Table ‘performance_schema.session_variables’ doesn’t exist
因为我是使用压缩包直接解压替换的,想想可能是升级中出的问题,于是度娘一下,发现很多类似的情况,但解决方法都是都回到旧版本,然后再用mysqldump导出,再到新版本里解压,费时也不方便。
我忽然想到以前出现个类似的情况,Mysql的Bin目录的下工具:mysql_upgrade.exe
于是就抱着试试的心态在命令行下执行:
mysql_upgrade -uroot -p
执行一切顺利:……
Repairing tables
mysql.proxies_priv OK
Upgrade process completed successfully.
Checking if update is needed.
然后重启mysql服务,再次进入,果然一切都正常了,哈!
通过慢日志查询可以知道哪些SQL语句执行效率低下
通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。
通过profiling命令得到更准确的SQL执行消耗系统资源的信息。 继续阅读“MYSQL配置与优化”
MySQL中各数据类型的取值范围
TINYINT
-128 – 127
TINYINT UNSIGNED
0 – 255
SMALLINT
-32768 – 32767
SMALLINT UNSIGNED
0 – 65535
MEDIUMINT
-8388608 – 8388607
MEDIUMINT UNSIGNED
0 – 16777215
INT 或 INTEGER
-2147483648 – 2147483647
INT UNSIGNED 或 INTEGER UNSIGNED
0 – 4294967295
BIGINT
-9223372036854775808 – 9223372036854775807
BIGINT UNSIGNED
0 – 18446744073709551615 继续阅读“MySQL中各数据类型的取值范围”
以下是网上流传比较广泛的30种SQL查询语句优化方法:
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
继续阅读“[转载]关于mysql处理百万级以上的数据时如何提高其查询速度的方法”
禁用电脑自动休眠:
powercfg -h off
安装MYSQL服务
mysqld –install mysql5 –defaults-file= %basedir%\my.ini
安装APACHE服务
httpd.exe -k install -n apache2.2
mysqldump -hIP地址 -u帐号ID -p 需要备份的数据库 > 111.sql
Enter password: ****************
mysql -hIP地址 -u帐号ID -p 需要还原的数据库 < 111.sql
Enter password: ****************
在处理网页订单的时候,想到最多的就是 mysqli::multi_query()这个了,可以同时提交多条语句:
1、在订单库里生成订单,并返回一个订单号
2、将购物车里产品清单转移到订单清单列表中
A、Copy到订单列表表中
B、清空购物车
这就是提交订单过程中,通常所需要处理的步骤了, mysqli::multi_query()的用武之地,然而在使用 mysqli::multi_query()时,需要注意以下几点:
继续阅读“mysqli::multi_query()的诸多注意事项”
SQL语句如下:
SELECT A . * , B.num
FROM
表一 A,
(SELECT product_id, count( product_id ) num
FROM 表二
GROUP BY product_id
)B
WHERE A.product_id = B.product_id
AND A.status =1
ORDER BY B.num DESC
其实际上就是把GROUP BY 的结果当作一个新表来使用而已,不知道查询效率如何,或者有没有更好的办法来实现?
另一种实现方法:
SELECT A. * , B.num
FROM 表一 A
INNER JOIN (
SELECT product_id, count( product_id ) num
FROM 表二
GROUP BY product_id
)B
ON A.product_id = B.product_id
AND A.status =1
ORDER BY B.num DESC
I like the definition used in Wikipedia: “a cache is a temporary storage area where often accessed data can be stored for quick access”. The idea is to get ‘often accessed data’ from a database and store it in memory (RAM or as a file in your local file system). This is because: 继续阅读“[转载]Caching using PHP/Zend_Cache and MySQL”