当前位置:网站首页>程序员面试必备PHP基础面试题 – 第十九天
程序员面试必备PHP基础面试题 – 第十九天
2022-08-03 14:42:00 【PHP学习网】
一、需要设置一个有效期为31天,的memcache值,请补充下面的代码
<?php
$memcache_obj=new memcache
$memcache_obj->connect(‘memcache_host,11211’);
$memcache_obj->set(‘varKey’,’varValue’,0,____);
?>答案:31243600
二、请对语句select * from tableExample where ((a and b) and c or (((a and b ) and (c and d)))进行优化的语句。
答案:select * from tableExample where (a and b and c) or (a and b and c and d);三、_____函数能返回脚本里的任意行中调用的函数的名称。该函数同时还经常被用在调试中,用来判断错误是如何发生的。
答案:debug_backtrace()
四、现在请你设计一个留言板系统,请简要的写出你设计的其中分页算法的思路.
答案:1.可以通过count(*)来得到记录总条数
2.将总条数除以每页显示条数取整得到分页数
3.点击下一页的链接进行传值,将传值拼装成where条件
4.显示相应数据
或者
一个简单的数据库的增删改查的留言版,分页的设计思路,即是每次进行查询所发送的参数不同,从数据库中得到不同数据,在sql语句中用limit动态设置偏移量。偏移量可以通过判断和叠加的方式而改变。而总页数可以是,返回的总行数除以每页显示的条数之后取整。如果是一个文件写入的留言版,则可以将取出的内容拆分成数组,后设置偏移量取出不同的元素。
五、数据库中的事务是什么?
答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成, 事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
六、优化MYSQL数据库的方法。
答: 1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM
2、使用连接(JOIN)来代替子查询:
a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid WHERE orderinfo.customerid IS NULL3、使用联合(UNION)来代替手动创建的临时表
a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`4、事务处理:
a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败
mysql_query("BEGIN");
mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
mysql_query("COMMIT");5、锁定表,优化事务处理:
a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作
mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");
mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id);
mysql_query("UNLOCK TABLES");6、使用外键,优化锁定表
a.把customerinfo里的customerid映射到orderinfo里的customerid,任何一条没有合法的customerid的记录不会写到orderinfo里
CREATE TABLE customerinfo
(
customerid INT NOT NULL,
PRIMARY KEY(customerid)
)TYPE = INNODB;
CREATE TABLE orderinfo
(
orderid INT NOT NULL,
customerid INT NOT NULL,
PRIMARY KEY(customerid,orderid),
FOREIGN KEY (customerid) REFERENCES customerinfo
(customerid) ON DELETE CASCADE
)TYPE = INNODB;注意:'ON DELETE CASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB;
7、建立索引:
a.格式:(普通索引)
创建:CREATE INDEX <索引名> ON tablename (索引字段)
修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)
创建表指定索引:CREATE TABLE tablename([...],INDEX索引名[1])
(唯一索引)
创建:CREATE UNIQUE <索引名> ON tablename (索引字段)
修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)
创建表指定索引:CREATE TABLE tablename([...],UNIQUE索引名[2])
(主键) 它是唯一索引,一般在创建表的格式为:
CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])
8、优化查询语句
a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作
例子1:
SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)
SELECT * FROM order WHERE orderDate<"2008-01-01";(快)例子2:
SELECT * FROM order WHERE addtime/7<24;(慢)
SELECT * FROM order WHERE addtime<24*7;(快)例子3:
SELECT * FROM order WHERE title like "%good%";
SELECT * FROM order WHERE title>="good" and name<"good";选取最适用的字段属性 尽量减少字段的长度 设置为not null
使用join代替子查询
使用union代替手动创建临时表
使用并优化事物处理
使用外键
使用索引
优化查询语句
边栏推荐
- 我现在推荐用mamba替代conda
- varchar2 and varchar2(char)_datetime data types
- gocron定时任务管理系统的安装与运行
- Jupyter Notebook 交互式编程 & 低代码拖拽式编程 | 数据科学生态下的理想平台
- Day1:面试必考真题
- 【软件工程之美 - 专栏笔记】36 | DevOps工程师到底要做什么事情?
- 兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
- PAT乙级-B1011 A+B 和 C(15)
- mysql占用服务器CPU100%的解决办法
- Use Typora+EasyBlogImageForTypora to write a blog and upload pictures quickly without a picture bed
猜你喜欢
随机推荐
HDU Largest prime factor(埃拉托色尼筛选法求素数模板法改动)
【MATLAB项目实战】基于CNN_SVM的图像花卉识别
Jupyter Notebook 交互式编程 & 低代码拖拽式编程 | 数据科学生态下的理想平台
Redis学习
使用华为HECS云服务器打造Telegraf+Influxdb+Grafana 监控系统【华为云至简致远】
redis的使用方法
PostgreSQL V14中更好的SQL函数
【常见 error】Vivado 综合出现中断、失败、“PID not specified”
地球自转加快
冰蝎加密 WebShell 过杀软
JS每晚24:00更新某方法
eolink告诉你,国内Api行业,可以内卷到什么程度?
HDU 1027 Ignatius and the Princess II(求由1-n组成按字典序排序的第m个序列)
servlet与jsp区别_servlet和class的区别
关于 vditor 可否同步飞书文档问题
未来无法预料
你没见过的《老友记》镜头,AI给补出来了|ECCV 2022
QT之Mysql驱动
三元表达式实现多个条件的判断
2022-08-03日报:汪林望 vs 刘铁岩:AI、机器学习在材料科学研究中能发挥哪些作用?









