标签 mysql 下的文章

SELECT mobile from `fa_user` GROUP BY mobile HAVING count(*) > 1;

查询User表手机号Mobile重复值的语句

面对日益增大的数据表容量,mysql查询性能也随之下降。这时候就需要寻找一套解决方案来应对将来的局面。根据网络的过往经验,现将一些基本规范进行总结归纳。方便日后所用。

尽量用单表查询,禁止多于3表的join查询
禁止使用select * from 语句,尽量只或许需要的字段。
避免冗余的排序
全模糊查询无法使用索引,应尽可能避免
使用in代替or
禁止隐式装换
禁止使用负项查询 如not in , not like ,!=这种

SELECT
    TABLE_NAME,
    DATA_LENGTH + INDEX_LENGTH,
    TABLE_ROWS,
    concat(round((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,2),'MB') AS DATA
FROM
    information_schema. TABLES
WHERE
    TABLE_SCHEMA = 'washbox' -- 数据库名
ORDER BY
    DATA + 0 DESC;

最近在做一个数据库管理功能,用于计算数据库资源情况。方便维护。

根据字段查表名(用于检索全库带有该字段的表)

精确查询

SELECT * FROM information_schema.columns WHERE column_name='column_name'; //column_name为字段名

故障检查:

服务器工具---事件查看器----Windows日志----应用程序----mysql,会在右侧看到一个红色的error

出现类似InnoDB: Attempted to open a previously opened tablespace.的报错
1.jpg

解决办法:

找到mysql数据的存放位置 如mysql/data,你会看到ib_logfile0 和ib_logfile1 这两个InnoDB表的日志文件,删除然后再重启服务,即可解决

2.jpg