前些天在Drupal網站中為了設法解決服務器性能的問題,實驗了将MySQL中的一些表合并,雖然最後證實這個效果不明顯,但花了好些時間就還是把代碼記錄下來,以備後用。
過程步驟:
- 備份數據庫
- 離線狀态
- 在4個表中創建字段
- 從3個公用的表複制相應字段内容到新創建的字段中
- 修改content_node_field、content_node_field_instance中内容
- 修改content type中field中的computed字段
- 修改views
- 修改contemplate模闆
- 清除緩存
- 删除3個公用的表
- 恢複在線狀态
代碼:
添加字段:
ALTER TABLE `content_type_county` ADD `field_area_of_county_value` LONGTEXT NULL DEFAULT NULL ,
ADD `field_number_of_county_value` LONGTEXT NULL DEFAULT NULL ,
ADD `field_postcode_of_county_value` LONGTEXT NULL DEFAULT NULL
ALTER TABLE `content_type_county` ADD `field_area_english_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_area_pinyin_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_city_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_city_english_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_county_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_county_english_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_province_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_province_english_of_county_value` TEXT NULL DEFAULT NULL
複制字段内容:
UPDATE content_type_address,content_field_area_pinyin SET content_type_address.field_area_pinyin_value = content_field_area_pinyin.field_area_pinyin_value WHERE content_type_address.nid=content_field_area_pinyin.nid
在content_node_field中添加幾行“字段說明”:
INSERT INTO `content_node_field` (`field_name`, `type`, `global_settings`, `required`, `multiple`, `db_storage`, `module`, `db_columns`, `active`, `locked`) VALUES
('field_postcode', 'text', 'a:4:{s:15:"text_processing";s:1:"0";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}', 0, 0, 1, 'text', 'a:1:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"big";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}}', 1, 0),
('field_area', 'text', 'a:4:{s:15:"text_processing";s:1:"0";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}', 0, 0, 1, 'text', 'a:1:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"big";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}}', 1, 0);
上面基本上記錄了幾種需要的操作代碼,但實際上合并了表後并沒有明顯效果,真正起作用的是為Views涉及到的字段添加索引,代碼如下:
ALTER TABLE `youbianku_chn_test`.`content_type_address` ADD INDEX `field_area_value` ( `field_area_value` ( 72 ) )
記錄完畢。
评论