当前位置: 首页 > news >正文

巴中网站建设开发一个官网多少钱

巴中网站建设,开发一个官网多少钱,wordpress是免费的,个人网站 flash索引 索引的概念 索引是一个排序的列表#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址#xff08;类似于C语言的链表通过指针指向数据记录的内存地址#xff09;。 使用索引后可以不用扫描全表来定位某行的数据#xff0c;而是先通过索引表找…索引 索引的概念 索引是一个排序的列表在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址类似于C语言的链表通过指针指向数据记录的内存地址。 使用索引后可以不用扫描全表来定位某行的数据而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据因此能加快数据库的查询速度。 索引就好比是一本书的目录可以根据目录中的页码快速找到所需的内容。 索引是表中一列或者若干列值排序的方法。 建立索引的目的是加快对表中记录的查找或排序。 索引的作用 设置了合适的索引之后数据库利用各种快速定位技术能够大大加快查询速度这是创建索引的最主要的原因。 当表很大或查询涉及到多个表时使用索引可以成千上万倍地提高查询速度。 可以降低数据库的IO成本并且索引还可以降低数据库的排序成本。 通过创建唯一性索引可以保证数据表中每一行数据的唯一性。 可以加快表与表之间的连接。 在使用分组和排序时可大大减少分组和排序的时间。 建立索引在搜索和恢复数据库中的数据时能显著提高性能 索引的副作用 索引需要占用额外的磁盘空间。 对于 MyISAM 引擎而言索引文件和数据文件是分离的索引文件用于保存数据记录的地址。 而 InnoDB 引擎的表数据文件本身就是索引文件。 更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间这是由于索引本身也需要更新。因此理想的做法是仅仅在常常被搜索的列以及表上面创建索引。   创建索引的规则 索引虽可以提升数据库查询的速度但并不是任何情况下都适合创建索引。因为索引本身会消耗系统资源在有索引的情况下数据库会先进行索引查询然后定位到具体的数据行如果索引使用不当反而会增加数据库的负担。 表的主键、外键必须有索引。因为主键具有唯一性外键关联的是主表的主键查询时可以快速定位。 记录数超过300行的表应该有索引。如果没有索引每次查询都需要把表遍历一遍会严重影响数据库的性能。 经常与其他表进行连接的表在连接字段上应该建立索引。 唯一性太差的字段不适合建立索引。 更新太频繁地字段不适合创建索引。 经常出现在 where 子句中的字段特别是大表的字段应该建立索引。 在经常进行 GROUP BY、ORDER BY 的字段上建立索引 索引应该建在选择性高的字段上。 索引应该建在小字段上对于大的文本字段甚至超长字段不要建索引。   索引的分类 普通索引 普通索引最基本的索引类型没有唯一性之类的限制。 直接创建索引 直接创建索引 CREATE INDEX 索引名 ON 表名 (列名[(length)]); #(列名(length))length是可选项下同。如果忽略 length 的值则使用整个列的值作为索引。如果指定使用列的前 length 个字符来创建索引这样有利于减小索引文件的大小。在不损失精确性的情况下长度越短越好。 #索引名建议以“_index”结尾。 对上表的name创建普通索引create index name_index on member (name); 以修改表的方式创建索引 ALTER TABLE 表名 ADD INDEX 索引名 (列名); alter table test01 add index scoree_index(score); 创建表的时候指定索引 CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...],INDEX 索引名(列名)); create table test04 (id int(10),name varchar(10),cardid int(18),phonenum int(11),address varchar(50),index name_index(name)); 唯一索引 唯一索引与普通索引类似但区别是唯一索引列的每个值都唯一。唯一索引允许有空值注意唯一索引和主键不同。 如果是用组合索引创建则列值的组合必须唯一。添加唯一键将自动创建唯一索引。 直接创建唯一索引 CREATE UNIQUE INDEX 索引名 ON 表名(列名); create unique index cardid_index on test04(cardid); 修改表方式创建唯一索引 ALTER TABLE 表名 ADD UNIQUE 索引名 (列名); alter table test04 add unique phonenum_index(phonenum); 创建表的时候指定唯一索引 CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...],UNIQUE 索引名 (列名)); create table test05 (id int(10),name varchar(20),cardid int(18),phonenum int(11),address varchar(48),unique id_index(id)); 主键索引 主键索引是一种特殊的唯一索引必须指定为“PRIMARY KEY”。一个表只能有一个主键不允许有空值。 添加主键将自动创建主键索引。 创建表的时候指定索引 创建表的时候指定 CREATE TABLE 表名 ([...],PRIMARY KEY (列名)); create table test06 (id int(10),name varchar(20),cardid int(18),phonenum int(11),address varchar(48),primary key(id)); 修改表方式创建主键索引 ALTER TABLE 表名 ADD PRIMARY KEY (列名); 创建一张无任何主键指定的表  alter table test07 add primary key(id); 组合索引 组合索引可以是单列上创建的索引也可以是在多列上创建的索引。 组合索引需要满足最左原则因为 select 语句的 where 条件是依次从左往右执行的 所以在使用 select 语句查询时 where 条件使用的字段顺序必须和组合索引中的排序一致否则索引将不会生效。   直接创建组合索引 CREATE INDEX 组合索引名 表名(列名1,列名2,列名3); select 查询时 where 语句中的条件字段 要与组合索引的字段排列顺序一致最左原则 select * from 表名 where 列名1... AND 列名2... AND 列名3...; create index name_cardid_phonenum_index on test07(name,cardid,phonenum); 修改表方式创建组合索引  alter table 表名 add index 索引名 (字段1,字段2,字段3,...); alter table test06 add index name_cardid_index(name,cardid);  创建表的时候指定组合索引 CREATE TABLE 表名 (列名1 数据类型,列名2 数据类型,列名3 数据类型,INDEX 索引名 (列名1,列名2,列名3)); create table test08 (id int,name char(20),cardid char(18),address varchar(48),index name_cardid_address (name,cardid,address)); 全文索引FULLTEXT 适合在进行模糊查询的时候使用可用于在一篇文章中检索文本信息。在 MySQL5.6 版本以前FULLTEXT 索引仅可用于 MyISAM 引擎在 5.6 版本之后 innodb 引擎也支持 FULLTEXT 索引。全文索引可以在 CHAR、VARCHAR 或者 TEXT 类型的列上创建。 直接创建全文索引 CREATE FULLTEXT INDEX 索引名 ON 表名 (列名); create fulltext index address_index on test06(address); 修改表方式创建全文索引 ALTER TABLE 表名 ADD FULLTEXT 索引名(列名);alter table test0 add fulltext remark_index(address); 创建表的时候指定索引 CREATE TABLE 表名 (字段1 数据类型[,...],FULLTEXT 索引名 (列名)); #数据类型可以为 CHAR、VARCHAR 或者 TEXTcreate table test09 (id int,name char(10),cardid char(20),address varchar(48),fulltext address_index(address)); 使用全文索引查询 #插入表数据 insert into test09 values(1,aaa,123456,nanjing);insert into test09 values(2,bbb,456123,beijing);insert into test09 values(3,ccc,7777777,beijing);insert into test09 values(4,ddd,090909,shanghai);insert into test09 values(5,eee,67890123,nanjing);#使用全文查询 SELECT * FROM 表名 WHERE MATCH(列名) AGAINST(查询内容); select * from test09 where match(address) against(beijing); 查看索引 show index from 表名; show keys from 表名;各字段的含义如下 Table表的名称。 Non_unique如果索引不能包括重复词则为 0如果可以则为 1。 Key_name索引的名称。 Seq_in_index索引中的列序号从 1 开始。 Column_name列名称。 Collation列以什么方式存储在索引中。在 MySQL 中有值‘A’升序或 NULL无分类。 Cardinality索引中唯一值数目的估计值。 Sub_part如果列只是被部分地编入索引则为被编入索引的字符的数目。如果整列被编入索引则为 NULL。 Packed指示关键字如何被压缩。如果没有被压缩则为 NULL。 Null如果列含有 NULL则含有 YES。如果没有则该列含有 NO。 Index_type用过的索引方法BTREE, FULLTEXT, HASH, RTREE。 Comment备注删除索引 直接删除索引 DROP INDEX 索引名 ON 表名;drop index address_index on test09; 修改表方式删除索引  ALTER TABLE 表名 DROP INDEX 索引名;alter table test08 drop index name_cardid_address; 删除主键索引 ALTER TABLE 表名 DROP PRIMARY KEY; alter table test08 drop primary key; 事务 事务的概念 事务是一种机制、一个操作序列包含了一组数据库操作命令并且把所有的命令作为一个整体一起向系统提交或撤销操作请求即这一组数据库命令要么都执行要么都不执行。 事务是一个不可分割的工作逻辑单元在数据库系统上执行并发操作时事务是最小的控制单元。 事务适用于多用户同时操作的数据库系统的场景如银行、保险公司及证券交易系统等等。 事务通过事务的整体性以保证数据的一致性。 事务能够提高在向表中更新和插入信息期间的可靠性。 事务的ACID特点 ACID是指在可靠数据库管理系统DBMS中事务(transaction)应该具有的四个特性原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability。这是可靠数据库所应具备的几个特性。   原子性Atomicity 指事务是一个不可再分割的工作单位事务中的操作要么都发生要么都不发生。 事务是一个完整的操作事务的各元素是不可分的。 事务中的所有元素必须作为一个整体提交或回滚。 如果事务中的任何元素失败则整个事务将失败。 举例 当A给B转帐的时候执行了扣款语句并提交此时如果发生系统故障A账号已经发生了扣款但B账号却没收到加款此时就会引起纠纷。这种情况就需要事务的原子性来保证事务要么都执行要么就都不执行。 一致性Consistency 指在事务开始之前和事务结束以后数据库的完整性约束没有被破坏。 当事务完成时数据必须处于一致状态。 在事务开始前数据库中存储的数据处于一致状态。 在正在进行的事务中数据可能处于不一致的状态。 当事务成功完成时数据必须再次回到已知的一致状态。 举例 在转帐事务进行完成不管此事务成功还是失败应该保证事务结束后表中A和B的存款总额跟事务执行前一致。 隔离性Isolation 指在并发环境中当不同的事务同时操纵相同的数据时每个事务都有各自的完整数据空间。 对数据进行修改的所有并发事务是彼此隔离的表明事务必须是独立的它不应以任何方式依赖于或影响其他事务。 修改数据的事务可在另一个使用相同数据的事务开始之前访问这些数据或者在另一个使用相同数据的事务结束之后访问这些数据。 也就是说并发访问数据库时一个用户的事务不被其他事务所干扰各并发事务之间数据库是独立的。 当多个客户端并发地访问同一个表时可能出现下面的一致性问题 脏读 当一个事务正在访问数据并且对数据进行了修改而这种修改还没有提交到数据库中这时另外一个事务也访问这个数据然后使用了这个数据。 不可重复读 指在一个事务内多次读同一数据。在这个事务还没有结束时另外一个事务也访问该同一数据。那么在第一个事务中的两次读数据之间由于第二个事务的修改那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的因此称为是不可重复读。即不能读到相同的数据内容 幻读 一个事务对一个表中的数据进行了修改这种修改涉及到表中的全部数据行。同时另一个事务也修改这个表中的数据这种修改是向表中插入一行新数据。那么操作前一个事务的用户会发现表中还有一个没有修改的数据行就好象发生了幻觉一样。 丢失更新 两个事务同时读取同一条记录A先修改记录B也修改记录B不知道A修改过B提交数据后B的修改结果覆盖了A的修改结果。 事务的隔离级别决定了事务之间可见的级别。 MySQL事务支持如下四种隔离用以控制事务所做的修改并将修改通告至其它并发的事务 1、未提交读(Read UncommittedRU) 允许脏读即允许一个事务可以看到其他事务未提交的修改。  2、提交读(Read CommittedRC) 允许一个事务只能看到其他事务已经提交的修改未提交的修改是不可见的。防止脏读。  3、可重复读(Repeatable ReadRR)——mysql默认的隔离级别 确保如果在一个事务中执行两次相同的SELECT语句都能得到相同的结果不管其他事务是否提交这些修改。可以防止脏读和不可重复读。  4、串行读(Serializable)——相当于锁表 完全串行化的读将一个事务与其他事务完全地隔离。每次读都需要获得表级共享锁读写相互都会阻塞。可以防止脏读不可重复读取和幻读(事务串行化)会降低数据库的效率。    mysql默认的事务处理级别是 repeatable read 而Oracle和SQL Server是 read committed 。   事务隔离级别的作用范围分为两种 事务隔离级别的作用范围分为两种 ● 全局级对所有的会话有效 ● 会话级只对当前的会话有效查询全局事务隔离级别 show global variables like %isolation%; SELECT global.tx_isolation;查询会话事务隔离级别 show session variables like %isolation%; SELECT session.tx_isolation; SELECT tx_isolation;设置全局事务隔离级别 set global transaction isolation level read committed; set global.tx_isolationread-committed; #重启服务后失效设置会话事务隔离级别 set session transaction isolation level repeatable read; set session.tx_isolationrepeatable-read; 持久性Durability 在事务完成以后该事务所对数据库所作的更改持久的保存在数据库之中并不会被回滚。 指不管系统是否发生故障事务处理的结果都是永久的。 一旦事务被提交事务的效果会被永久地保留在数据库中。 总结在事务管理中原子性是基础隔离性是手段一致性是目的持久性是结果。   事务控制语句 BEGIN 或 START TRANSACTION显式地开启一个事务。 COMMIT 或 COMMIT WORK提交事务并使已对数据库进行的所有修改变为永久性的。 ROLLBACK 或 ROLLBACK WORK回滚会结束用户的事务并撤销正在进行的所有未提交的修改。 SAVEPOINT S1使用 SAVEPOINT 允许在事务中创建一个回滚点一个事务中可以有多个 SAVEPOINT“S1”代表回滚点名称。 ROLLBACK TO [SAVEPOINT] S1把事务回滚到标记点。 查看当前的隔离级别 show session variables like %isolation%; 修改隔离级别 set session transaction isolation level read committed; 使用 set 设置控制事务 SET AUTOCOMMIT0; #禁止自动提交 SET AUTOCOMMIT1; #开启自动提交Mysql默认为1 SHOW VARIABLES LIKE AUTOCOMMIT; #查看Mysql中的AUTOCOMMIT值如果没有开启自动提交当前会话连接的mysql的所有操作都会当成一个事务直到你输入rollback|commit;当前事务才算结束。当前事务结束前新的mysql连接时无法读取到任何当前会话的操作结果。 如果开起了自动提交mysql会把每个sql语句当成一个事务然后自动的commit。 当然无论开启与否begin; commit|rollback; 都是独立的事务。 查看事务的自动提交功能是否开启 show variables like autocommit; 存储引擎 MyISAM 表支持 3 种不同的存储格式 1、静态(固定长度)表 静态表是默认的存储格式。静态表中的字段都是非可变字段这样每个记录都是固定长度的这种存储方式的优点是存储非常迅速容易缓存出现故障容易恢复缺点是占用的空间通常比动态表多。 2、动态表 动态表包含可变字段记录不是固定长度的这样存储的优点是占用空间较少但是频繁的更新、删除记录会产生碎片需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命令来改善性能并且出现故障的时候恢复相对比较困难。 3、压缩表 压缩表由 myisamchk 工具创建占据非常小的空间因为每条记录都是被单独压缩的所以只有非常小的访问开支。 常用存储引擎 InnoDB 支持事务、外键约束支持行级锁定在全表扫描时仍然表级锁定 读写并发能力较好在5.5版本才支持全文索引缓存能力较好可以减少磁盘IO的压力数据和索引是存储在一个文件中。 使用场景适用于一致性要求较高数据频繁更新高并发读写的业务场景。 MyISAM 不支持事务、外键约束只支持表级锁定 适合单独的查询或写入读写并发能力较差支持全文索引占用资源较小适合硬件资源相对比较差的服务器使用数据和索引是分开存储的。 使用场景适用于不需要事务处理单独的查询或插入数据的业务场景。 查看系统支持的存储引擎 show engines;查看表使用的存储引擎 方法一show table status from 库名 where name表名\G 方法二use 库名; show create table 表名; 修改存储引擎 方法一 方法一通过 alter table 修改 use 库名; alter table 表名 engineMyISAM; alter table test09 enginemyisam; show create table test09; 方法二 方法二 通过修改 /etc/my.cnf 配置文件指定默认存储引擎并重启服务 vim /etc/my.cnf ...... [mysqld] ...... default-storage-engineINNODBsystemctl restart mysql.service注意此方法只对修改了配置文件并重启mysql服务后新创建的表有效已经存在的表不会有变更。 方法三 方法三 通过 create table 创建表时指定存储引擎 use 库名; create table 表名(字段1 数据类型,...) engineMyISAM;create table test10(name varchar(10),age char(4)) enginemyisam; show create table test10\G; InnoDB行锁与索引的关系 一、 delete from test1 where id1;     如果id字段是主键innodb对于主键使用了聚簇索引会直接锁住整行记录。   二、 delete from test1 where nameaaa; 如果name字段是普通索引会先锁住索引的两行接着会锁住相应主键对应的记录。   三、 delete from test1 where age23; 如果age字段没有索引会使用全表扫描过滤这时表上的各个记录都将加上锁。
http://www.sadfv.cn/news/75464/

相关文章:

  • 免费发布推广信息的网站网站建设方案和报价表
  • 做国外网站推广17一起做网站广州
  • 网站不备案能用吗生成html网站地图
  • 网站备案类型网站互联
  • 网站制作 建站汽车网站开发思路
  • 上海网站建设在哪免费的网站建设
  • 多模块内容网页布局设计曲靖seo
  • 做网站 需求网页制作软件app免费
  • 别人公司网站进不去店面设计装修网
  • 网站开发有啥作用wordpress togetherjs
  • 自己做彩票网站江阴公司网站建设
  • 国外工业设计网站排名查询
  • 乌班图系统做网站西安电商网站开发
  • 网站的说服力移动互联网终端
  • 网站主页布局域名怎么建网站
  • 网站建设管理属于职业资格吗猫咪社区官网在线最新
  • 网站建设开发岗位职责如何登陆建设银行信用卡网站
  • 网站转应用环境设计
  • 做网站需要注意些什么国内知名软件开发公司
  • 网页制作实践 做网站莱芜网站建设哪家好
  • 常州市建设局网站淳安网站建设
  • 教育技术学网站模版如何做带后台的网站
  • 鄂州英文网站建设wordpress删除无分类文章
  • 营销型网站建设电话栾川网站建设
  • 360怎么做网站排名培训网站设计
  • 万域网站建设珠海企业医疗网站建设
  • 网站在百度上搜不到江苏做网站找谁
  • 网站建设二次开发ppt模板免费下载网址
  • 个人网站备案后做游戏网站开发网页设计
  • 企业邮箱收费吗seo 适合哪些行业