收藏本站

mysql 索引优化实践

环境:Mysql 5.6

表:35个字段

当在字段建立索引后,使用 like **% 时,第一次查询不会使用索引,之后才会使用索引。


对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。下面用几个例子对比查询条件的不同对性能影响.


create table test(

a int,

b int,

c int,...

阅读全文>>

C3P0 详细配置说明

<c3p0-config>
<default-config>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">3</property>

<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetry...

阅读全文>>

mysql 不同引擎索引异同详解


聚簇索引(Clustered Indexes)

聚簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建立聚簇索 引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只能有一个聚簇索引。因为由存储引擎实现索引,所以,并不是所有的引擎都支持聚簇索引。 目前,只有solidDB和InnoDB支持。
聚簇索引的结构大致如下:

 

 注: 叶子页面包含完整的元组,而内节点页面仅包含索引的列(索引的列为整型)。一些DBMS允许用户指定聚簇索引,但是MySQL的存储引擎到目前为止都不支 持。InnoDB对主键建立聚簇索引。如果...

阅读全文>>

mysql数据库优化小结

    因为博主项目中使用Mysql 较多,所以该文总结的适用于Mysql ,其他数据库也可参考。

字段的设计优化:

(1)、越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。
(2)、简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。
(3)、尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使...

阅读全文>>

mysql 重复数据删除

业务中遇到要从表里删除重复数据的需求。想当然写了下面的语句。


//示例表:
CREATE TABLE `users` (  
                `id` int(10) NOT NULL AUTO_INCREMENT,  
                `name` char(50) NOT NULL,  
                PRIMARY KEY (`id`)   ...





阅读全文>>

php mysql 注入攻击预防要点

1:数字型参数使用类似intval,floatval这样的方法强制过滤。

2:字符串型参数使用类似mysql_real_escape_string这样的方法强制过滤,而不是简单的addslashes。

3:最好抛弃mysql_query这样的拼接SQL查询方式,尽可能使用PDO的prepare绑定方式。

4:使用rewrite技术隐藏真实脚本及参数的信息,通过rewrite正则也能过滤可疑的参数。

5:关闭错误提示,不给攻击者提供敏感信息:display_errors=off。

6:以日志的方式记录错误信息:log_errors=on和error_log=filename,...

阅读全文>>

SQL Error: 1064, SQLState: 42000错误原因

这个错误耽搁好多时间。

保留字被引起来后可以用作识别符。如果在表中使用这些会报1064,42000错误。

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL...

阅读全文>>

mysql 索引创建方法及作用

索引分单列索引组合索引

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

MySQL索引类型包括:

(1)普通索引

这是最基本的索引,它没有任何限制。

它有以下几种创建方式:

◆创建索引 CREATE INDEX indexName ON mytable(username(length));

如果是 CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同

◆修改表结构 ALTER mytable ADD INDEX [indexName] ON (username(lengt...

阅读全文>>

MYSQL 设定自增ID的初始值

MYSQL:设定自增ID的起始值

修改表的自增字段的起始ID值
ALTER TABLE table_name AUTO_INCREMENT=1000

阅读全文>>